文档章节

MySQL异常【数据库断开连接】:Communications link failure

谢思华
 谢思华
发布于 2015/08/17 12:29
字数 482
阅读 11735
收藏 7

一.异常信息以及解决办法

      
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:Communications link failure 
org.springframework.transaction.CannotCreateTransactionException: 
    Could not open JDBC Connection for transaction; 
    nested exception iscom.mysql.jdbc.exceptions.jdbc4.CommunicationsException: 
    Communications link failure
The last packet successfully received from the server was 6,388 milliseconds ago.  
The last packet sent successfully to the server was 1,504 milliseconds ago.
at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:240)

异常分析:程序与MySQL通讯失败了,即连接失败了。

       此为程序打开数据库连接后,等到做数据库操作时,发现连接被MySQL关闭掉了。而在MySQL这一层,MySQL5配置上默认将连接的等待时间(wait_timeout)缺省为8小时。连接超过8小时,会导致mysql认为这个连接超时无效,然后进行关闭。

mysql﹥ 
mysql﹥ show global variables like 'wait_timeout'; 
+---------------+---------+ 
| Variable_name | Value | 
+---------------+---------+ 
| wait_timeout | 28800 | 
+---------------+---------+ 
1 row in set (0.00 sec) 
28800 seconds,也就是8小时。


解决办法(尝试方案顺序可为:(1)(3)(2)):
(1)在jdbc连接url的配置中,你可以附上“autoReconnect=true”,但这仅对mysql5以前的版本起作用。

(2)既然问题是由mysql5的全局变量wait_timeout的缺省值太小引起的,我们将其改大就好了。 
查看mysql5的手册,发现对wait_timeout的最大值分别是24天/365天(windows/linux)。以windows为 例,假设我们要将其设为21天,我们只要修改mysql5的配置文件“my.ini”(mysql5 installation dir),增加一行:wait_timeout=1814400 ,需要重新启动mysql5。 
linux系统配置文件:/etc/my.cnf 

(3)我们可以将数据库连接池的 validateQuery、testOnBorrow(testOnReturn)打开,这样在 每次从连接池中取出且准备使用之前(或者使用完且在放入连接池之前)先测试下当前使用是否好用,如果不好用,系统就会自动destory掉。
或者testWhileIdle项是设置是否让后台线程定时检查连接池中连接的可用性。


二.根本解决办法:代码优化



类似问题:java.net.SocketException四大异常解决方案


© 著作权归作者所有

共有 人打赏支持
谢思华
粉丝 61
博文 208
码字总数 135083
作品 0
广州
程序员
ActiveMQ:No operations allowed after statement ...

ActiveMQ版本:5.5.1 记录人:@郑昀现象: 系统现象:部分消息发送失败,失败频率不正常。 日志信息:activemq.log 中一直有这样的错误日志: 看上去又是 mq broker 失去了数据库连接,但代码...

旁观者-郑昀
2012/11/10
0
0
druid(version:1.1.9)连接池问题请教

@wenshao 你好,想跟你请教个问题: 我们在生产环境中使用druid,偶尔会报如下异常信息: Communications link failure The last packet successfully received from the server was 2,797,...

may-snow
05/08
0
0
idea hibernate mysql诡异的连接问题

首先mysql的配置没有问题。因为我在IDEA中新建DATA Source然后配置好后是可以连接的,执行建表操作也没有任何问题(idea自带的数据库连接没有任何问题) 然后从持久化窗口中右键项目选择生成持...

cgcgbcbc
2013/12/21
1K
1
Communications link failure,The last packet

Last modified:2013-10-08 14:16:47 ** web网站使用MySQL数据库,今天突然报以下错误: Communications link failure,The last packet successfully received from the server was * milli......

mj4738
2014/03/31
0
1
mysql : Communications link failure 何解?

软件环境:mysql 5.5.25 应用使用数据库连接池 c3p0 经常会发生如下异常: ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications......

胡咧咧
2013/05/29
9.5K
4

没有更多内容

加载失败,请刷新页面

加载更多

原型模式

1、原型模式-定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 克隆(浅度克隆->拷贝值类型或者引用,深度克隆->创建新的对象,开辟新的内存) 例如客户端知道抽象Pro...

阿元
今天
36
0
awk命令扩展使用操作

awk 中使用外部shell变量 示例1 [root@centos01 t1022]# A=888[root@centos01 t1022]# echo "" | awk -v GET_A=$A '{print GET_A}'888[root@centos01 t1022]# echo "aaaaaaaaaaaaa" | aw......

野雪球
今天
32
0
深入解析MySQL视图VIEW

Q:什么是视图?视图是干什么用的? A:视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中的。   通过视图,可以展现基表的部分数据;...

IT--小哥
今天
43
0
虚拟机学习之二:垃圾收集器和内存分配策略

1.对象是否可回收 1.1引用计数算法 引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时候计数器值为0的对象就是不可能...

贾峰uk
今天
31
0
smart-doc功能使用介绍

smart-doc从8月份底开始开源发布到目前为止已经迭代了几个版本。在这里非常感谢那些敢于用smart-doc去做尝试并积极提出建议的社区用户。因此决定在本博客中重要说明下smart-doc的功能,包括使...

上官胡闹
昨天
41
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部