2

JDBCを機能させるためにできる限りのことを試みていますが、現在私を困惑させているのはこの例外だけです。これについてはわかりません。

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)
    com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2163)
    com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794)
    com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:374)
    com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
    java.sql.DriverManager.getConnection(libgcj.so.10)
    java.sql.DriverManager.getConnection(libgcj.so.10)

これを使って接続しています...

Class.forName("com.mysql.jdbc.Driver");
DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql", "username", "password");

どうもありがとう!

4

1 に答える 1

7

それらは関連する部分です:

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.ConnectionImpl.configureClientCharacterSet(ConnectionImpl.java:1890)
    ...
    java.sql.DriverManager.getConnection(libgcj.so.10)

これらの疑問符は、クライアント文字セットを構成するためのクエリ中に深​​刻な文字エンコードの問題があることを示しています。

最初の試行として、my.cnfファイルを開き、次の2つのエントリが存在することを確認します。

character_set_server=utf8
collation_server=utf8_general_ci

2回目の試行として、GCJをOpenJDKまたはOracle(Sun)JDKに置き換えます。これらははるかに堅牢です。つまり、GCJには奇妙な点があることが知られています。

于 2011-01-20T02:34:36.547 に答える