因此,在旧服务器因服务器故障而死机后,我正在设置新服务器。我遇到的唯一难题是 JDBC 设置。我的服务器运行一个 Java 程序,该程序最初在旧服务器上运行良好。我会直奔主题,向您展示问题所在...这是我尝试使用 127.0.0.1 以及 localhost 进行连接时的堆栈跟踪:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '????????????????' at line 1
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1049)
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593)
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525)
com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986)
com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140)
com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2620)
com.mysql.jdbc.ConnectionImpl.configureClientCharacterSet(ConnectionImpl.java:1890)
com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3523)
com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2386)
很模糊不是吗?
这是我用来连接服务器的代码(在我的旧服务器上运行良好):
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = java.sql.DriverManager.getConnection("jdbc:mysql://localhost:3306/schema?user=user_name&password=pass_word");
以下是有关我的服务器的一些信息:服务器正在运行 Debian Squeeze,MySQL 设置良好,因为 phpMyAdmin 运行完美,Java 版本 1.5.0,JDBC Connector/J 版本 5.1.14,CLASSPATH 已设置为正确的目录,端口正确转发 3306。
我最后的手段是权限,但我不确定如何修复此条件。所以,对于任何正确将 Java 服务器连接到 JDBC 的人,您认为我遗漏了什么?正如我提到的,这个 Java 服务器在我的旧服务器上运行过(但运行的是 Debian Lenny)。谢谢!
答案1
正如异常显示的错误是在 SQL 语法中,可能是在 JDBC Url 中,如果你读文档您可以看到,当未指定端口时,冒号也应该被省略,请尝试以下操作:
.getConnection("jdbc:mysql://localhost/schema?user=user_name&password=pass_word")
希望它有效。