Communications link failure的解决办法

使用Connector/J连接MySQL数据库,程序运行较长时间后就会报以下错误:
Communications link failure,The last packet successfully received from the server was *** millisecond ago.The last packet successfully sent to the server was ***  millisecond ago。

其中错误还会提示你修改wait_timeout或是使用Connector/J的autoReconnect属性避免该错误。

后来查了一些资料,才发现遇到这个问题的人还真不少,

大部分都是使用连接池方式时才会出现这个问题,短连接应该很难出现这个问题。

这个问题的其中一个原因:

MySQL服务器默认的“wait_timeout”是28800秒即8小时,意味着如果一个连接的空闲时间超过8个小时,

MySQL将自动断开该连接,而连接池却认为该连接还是有效的(因为并未校验连接的有效性),

当应用申请使用该连接时,就会导致上面的报错。

修改MySQL的参数,wait_timeout最大为31536000即1年,在my.cnf中加入:

my.cnf位置在MySQL安装目录下:

[mysqld]

    wait_timeout=31536000
    interactive_timeout=31536000

重启mysql服务生效,需要同时修改这两个参数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"Communications link failure"是MySQL中遇到的一种常见错误,通常表示在尝试连接到数据库服务器时出现了连接问题。这种情况可能是由于网络问题、防火墙设置、服务器未启动,或者是数据库配置文件中的连接参数不正确导致的。以下是一些解决办法: 1. **检查网络**:确保服务器和客户端之间的网络连接正常,包括检查路由器、交换机和物理连接。 2. **重启服务**:在服务器端,尝试重启MySQL服务(`service mysql restart` 或 `sudo systemctl restart mysql`,具体命令取决于你的操作系统)。 3. **检查防火墙**:确保防火墙没有阻止MySQL的连接。如果使用了防火墙,可能需要临时关闭或添加规则以允许数据库通信。 4. **检查主机名和IP地址**:确认客户端和服务器之间的主机名或IP地址是否正确,以及它们是否可以互相解析。 5. **检查配置文件**:检查MySQL的my.cnf(或my.ini)文件,确认`[mysqld]`部分的`bind-address`和`port`设置是否允许外部连接,如有外网访问需求,可能需要将`bind-address`设为`0.0.0.0`。 6. **登录尝试**:直接在服务器上尝试从命令行登录看是否能成功,如果不行,则问题可能出在客户端。 7. **安全组设置**:如果是云环境,检查VPC的安全组规则,确保MySQL的端口(默认3306)开放给正确的IP或源IP。 8. **检查日志**:查看MySQL的日志文件(通常是`/var/log/mysql/error.log`),查找关于连接失败的具体错误信息,这可能会提供更详细的故障原因。 如果以上步骤无法解决问题,请分享具体的错误信息,以便提供更针对性的解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值