【问题标题】:Connector/J getConnection with syntax error but no syntax有语法错误但没有语法的连接器/J getConnection
【发布时间】:2012-09-11 14:30:27
【问题描述】:

我正在尝试使用 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 调用时失败。我使用打印语句来解决这个问题,因为 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 中遇到了同样的问题。

【问题讨论】:

    标签: java mysql database connection


    【解决方案1】:
    【解决方案2】:

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

    参考this example

    【讨论】:

    • getConnection() 上有不同的选项。但是我还是尝试了,还是失败了。
    【解决方案3】:

    我发现了以下内容:Stumped SQL Exception for JDBC

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

    character_set_server=utf8
    collation_server=utf8_general_ci
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-24
      • 2014-06-08
      • 1970-01-01
      • 1970-01-01
      • 2021-02-21
      • 1970-01-01
      相关资源
      最近更新 更多