无法读取服务器的响应

Pit*_*ita 11 java

我编写了一个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
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么会这样吗?在软件运行超过半分钟后,通常这会在尝试添加记录时给出错误消息.似乎松动了连接或什么的.当我运行程序并快速写一个新记录时,它的工作原理

Cha*_*Mic 0

您是否遵循/阅读了本教程:

与 MYSQL 的连接

您有一个例外的部分,这对您可能有用。

我将引用一些有关您的特定异常的内容,请尝试一下:

如果您收到 SQLException: 连接被拒绝或连接超时或 MySQL 特定的 CommunicationsException: 通信链接失败,则意味着数据库根本无法访问。这可能有以下一种或多种原因:

JDBC URL 中的 IP 地址或主机名错误。本地 DNS 服务器无法识别 JDBC URL 中的主机名。JDBC URL 中的端口号缺失或错误。数据库服务器已关闭。数据库服务器不接受 TCP/IP 连接。数据库服务器已耗尽连接。Java 和 DB 之间的某些东西正在阻止连接,例如防火墙或代理。

要解决其中一个问题,请遵循以下建议:

使用 ping 验证并测试它们。刷新 DNS 或在 JDBC URL 中使用 IP 地址。根据MySQL DB的my.cnf进行验证。启动数据库。验证 mysqld 是否在没有 --skip-networking 选项的情况下启动。重新启动数据库并相应地修复您的代码,使其最终关闭连接。禁用防火墙和/或配置防火墙/代理以允许/转发端口。