Communications link failure的解决办法

最近写了一个小的javaweb项目,做测试时突然报了Communications link failure错误,上网查阅之后发现出问题的地方在Mysql.

我使用的是C3P0连接池,当连接池创建了一个connection后就相当于有一条与数据库连接的通道,mysql默认当这个通道空闲了8小时(也就是8小时没有调用这个connection做事情)就释放它,当mysql释放了connection后,C3P0却并不知道这件事,所以他不会去释放这个错误的connection,所以当我们再次拿到这个错误的connection用它做事情的时候就会报错.

解决方法:

网上很多帖子都建议更改mysql的配置文件

打开my.ini文件,在port=3306下面加入

wait_timeout=31536000
interactive_timeout=31536000

更改mysql的等待时间,但是它的最大值只能是2147483,约为25天.

 

但是我用了这个方法还是会报错,参考了https://blog.csdn.net/rfjian123/article/details/18153913以后,我更改了连接池的配置文件

在C3P0的配置文件上加入

 <!-- 最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->   
  <property name="maxIdleTime" value="0"></property> 

更改value的值,改为3600(一小时),这时当这个connection一小时没有活动就会被连接池释放掉,所以也不存在被mysql回收的情况了.

解决问题.

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值