就是普通的查询mysql数据库的代码:
错误栈如下:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2209)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:776)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:352)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:284)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at testHttpConnection.util.DBUtil.getConn(DBUtil.java:26)
at testHttpConnection.TestMysql.main(TestMysql.java:23)
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:675)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1078)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2137)
... 13 more
Caused by: java.net.SocketException: Permission denied: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:152)
at java.net.SocketInputStream.read(SocketInputStream.java:122)
at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:113)
at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:160)
at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:188)
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2494)
at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:599)
... 15 more
Izinkan saya berkongsi penyelesaian kepada ralat yang saya alami sebelum ini, yang berbeza daripada tingkat satu:
Punca khusus ralat nampaknya disebabkan oleh perubahan konfigurasi dalam jvm, yang menghalang jvm daripada mendapatkan beberapa maklumat melalui rangkaian
Ini sepatutnya menyelesaikan masalah anda:
Ralat juga akan menggesa anda untuk mengubah suai tunggu_masa tamat atau menggunakan atribut autoReconnect Penyambung/J untuk mengelakkan ralat ini.Penyelesaian kepada kegagalan pautan Komunikasi
Setelah menyemak beberapa maklumat, saya mendapati terdapat segelintir orang yang menghadapi masalah ini Kebanyakan daripada mereka mengalami masalah ini apabila menggunakan kaedah sambungan sambungan. Punca masalah ini:
"wait_timeout" lalai pelayan MySQL ialah 28800 saat atau 8 jam, yang bermaksud bahawa jika sambungan melahu selama lebih daripada 8 jam, MySQL akan memutuskan sambungan secara automatik, tetapi kumpulan sambungan berpendapat bahawa sambungan Ia masih sah (kerana kesahihan sambungan belum disahkan apabila aplikasi memohon untuk menggunakan sambungan, ia akan menyebabkan ralat di atas).
Ubah suai parameter MySQL Tempoh tunggu maksimum ialah 31536000 atau 1 tahun Tambahkan pada my.cnf:
[mysqld]
wait_timeout=31536000
interactive_timeout=3153600> dan Restar🎜>. perlu diubah suai pada masa yang sama.