Connector / J getConnection语法错误但没有语法

时间:2012-09-11 14:30:28

标签: java mysql database connection

我正在尝试使用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相同的问题。

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

您的getConnection声明应为
conn = DriverManager.getConnection("jdbc:mysql://192.168.1.3:3306/dbname", "dbuser", "dbpw");

参考this example

答案 2 :(得分:0)

我找到了以下内容:Stumped SQL Exception for JDBC

简而言之,服务器my.cnf文件需要:

character_set_server=utf8
collation_server=utf8_general_ci

它还说GCJ(gnu java编译器)很冒险,但我没有替换它