我正在尝试使用Connector / J连接到mysql数据库,但无论我使用什么代码,都会收到相同的消息。我可以使用debian上的mysql命令手动连接到它。
错误为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
最新代码是:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class E{
public void connect(){
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(
"jdbc:mysql://192.168.1.3:3306/dbname?user=dbuser&password=dbpw");
}catch( Exception e){
System.out.printf("Something went wrong: "+e.getMessage());
}
}
在getConnection调用时失败。我使用print语句来解决这个问题,因为NetBeans没有这个问题(但是当我放入一台坏主机并从NetBeans运行它时它也不会抱怨)。
我在DataSource
中遇到了完全相同的问题import java.sql.*;
import javax.sql.*;
...
com.mysql.jdbc.jdbc2.optional.MysqlDataSource ds
= new com.mysql.jdbc.jdbc2.optional.MysqlDataSource();
ds.setServerName("192.168.1.3");
ds.setPortNumber(3306);
ds.setDatabaseName("dbname");
ds.setUser("dbuser");
ds.setPassword("dbpw");
conn = ds.getConnection();
...
有些东西正在运作,因为如果我输入了错误的密码,我会收到拒绝访问的消息
我正在使用mysql-connector-java-5.1.22-bin.jar
并遇到与5.1.21相同的问题。
答案 0 :(得分:1)
答案 1 :(得分:0)
您的getConnection
声明应为
conn = DriverManager.getConnection("jdbc:mysql://192.168.1.3:3306/dbname", "dbuser", "dbpw");
答案 2 :(得分:0)
我找到了以下内容:Stumped SQL Exception for JDBC
简而言之,服务器my.cnf文件需要:
character_set_server=utf8
collation_server=utf8_general_ci
它还说GCJ(gnu java编译器)很冒险,但我没有替换它