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的配置文件上加入

    
   

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

解决问题.

你可能感兴趣的:(编程路上的坑)