【发布时间】:2012-03-30 00:54:48
【问题描述】:
我编写了一个 Java 程序,该程序连接到我服务器上的数据库,以查找记录、写入记录、更新和删除。出于某种原因,查找记录有效,但大多数情况下,当我尝试保存或写入记录时,它会显示一条错误消息:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet successfully received from the server was 9,787 milliseconds ago. The last packet sent successfully to the server was 8,183 milliseconds ago.
Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2552)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3002)
... 46 more
谁能解释为什么会这样? 通常,在我让软件运行大约半分钟后,尝试添加记录时,这会给我错误消息。似乎连接松动什么的。当我运行程序并快速写入新记录时,它可以工作
【问题讨论】:
-
向我们展示代码中有意义的部分,这是我们猜测发生了什么的唯一方法。
-
你应该小心管理丢失的连接stackoverflow.com/a/8997413/90909
-
我的连接器类中有 con.close 方法。那可能是为什么?
-
升级到 MySQL 5.6.28 为我解决了这个问题(从 5.5.40 开始)