私はjavaを使用してMysqlからいくつかのレコードを照会しました。しかし、ある期間のいくつかのクエリーでは、私はクエリーを失敗させる問題に遭遇しますが、他のクエリーではクエリーは成功します。エラーメッセージは次です:CommunicationsException:通信リンクのエラー
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet successfully received from the server was 90 milliseconds ago. The last packet sent successfully to the server was 1,674 milliseconds ago.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3090)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2979)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3520)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:935)
at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1433)
at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:2924)
at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:477)
at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:2619)
at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:1788)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2209)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2619)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2569)
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1521)
......
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.io.IOException: Packets received out of order
at com.mysql.jdbc.MysqlIO.readRemainingMultiPackets(MysqlIO.java:3152)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3077)
... 23 more
私はいくつかの方法を試してみました、のような:
- は私の接続URL
に?autoReconnect=true&failOverReadOnly=false&maxReconnects=10
を追加/etc/my.conf
max_allowed_packet = 128 * 1024 * 1024
を設定しても何も起こりません。 私の環境では、次のとおりです。
- のMySQL:5.5.3-M3-ログソースの配布を
- のJava:1.6.0_16
- JDK:ホットスポット(TM)64ビットサーバーVM(14.2を構築します-b01、混合モード)
- JDBCます。mysql-コネクタのjava-5.1.18
:
はは、あなたがより多くの詳細を読むことができます: ソリューションということです操作では、私は 'group_concat'を使用し、私の連結文字列は非常に長いです。また、私はPHPを使用してクエリを試して、それはうまく動作します。 'group_concat_max_len' <32Mを設定すると、GROUP_CONCAT()によっていくつかのデータがカットされ、成功を返します。しかし、group_concat_max_len> 32Mの場合、失敗しました。 – zhouzuan2k
[MySQL-JDBC:通信リンク障害]の複製が可能です。(0120-18753-1) – CloudyMarble