Communications link failure during commit(). Transaction resolution unknown.

连线北海
连线北海
连线北海
201
文章
6
评论
2018年9月4日12:19:29 评论 3,677 1909字阅读6分21秒

JAVA WEB程序运行一段时间后出现以下错误,遍寻之后得到以下解决方案,这个方案并不是万能的,不要一味套用,切记。

原因分析:这个问题出现的原因大部分归结于事务超时,那我们可以增大超时等待的时间,或者从程序角度分拆事务粒度,不要过长时间的执行一个事务。

[com.alibaba.druid.util.JdbcUtils] close connection error
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Communications link failure during rollback(). Transaction resolution unknown.
    at sun.reflect.GeneratedConstructorAccessor30.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
    at com.mysql.jdbc.Util.getInstance(Util.java:387)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:917)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:896)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:885)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860)
    at com.mysql.jdbc.ConnectionImpl.rollback(ConnectionImpl.java:4602)
    at com.mysql.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:4233)
    at com.mysql.jdbc.ConnectionImpl.close(ConnectionImpl.java:1531)
    at com.alibaba.druid.filter.FilterChainImpl.connection_close(FilterChainImpl.java:169)
    at com.alibaba.druid.filter.stat.StatFilter.connection_close(StatFilter.java:254)
    at com.alibaba.druid.filter.FilterChainImpl.connection_close(FilterChainImpl.java:165)
    at com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl.close(ConnectionProxyImpl.java:115)
    at com.alibaba.druid.util.JdbcUtils.close(JdbcUtils.java:83)
    at com.alibaba.druid.pool.DruidDataSource.shrink(DruidDataSource.java:2307)
    at com.alibaba.druid.pool.DruidDataSource$DestroyTask.run(DruidDataSource.java:2094)
    at com.alibaba.druid.pool.DruidDataSource$DestroyConnectionThread.run(DruidDataSource.java:2081)

解决方案:修改全局wait_timeout

  1. 借用Navicat工具在查询命令窗口进行修改
  2. 后台登录mysql管理控制台进行修改
  • mysql -uroot -p 先进入到MYSQL数据库
  • mysql> show global variables like '%time%' ;
  • SET GLOBAL wait_timeout = 288000;

 

继续阅读
weinxin
微信公众号
分享IT信息技术、北海生活的网站。提供北海本地化的信息技术服务。
连线北海
  • 本文由 发表于 2018年9月4日12:19:29
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
Java库之Lombok的妙用 JAVA编程

Java库之Lombok的妙用

Lombok是目前比较流行的Java库,Lombok能以简单的注解形式来简化Java代码,提高开发人员的开发效率,免去额外的getter或equals等方法,降低由于修改引起的维护成本,Lombok在...
【进阶】-Java读写文件锁 JAVA编程

【进阶】-Java读写文件锁

众所周知,Java中锁的概念是非常重要的,锁可以保证资源的安全可控,恰当使用锁即可使得资源高效利用,又能保证线程的安全访问,编程中在读取文件的时候常常碰到文件锁的使用,本文简单阐述文件锁在Java中的...
查看MySQL 数据表大小 信息技术

查看MySQL 数据表大小

日常工作中经常使用MySQL存储数据,于是想看看MySQL中这个数据库大小以及每个表的大小,下面总结2种方法仅供参考。 第一种 如果想知道MySQL数据库中每个表占用的空间、表记录的行数的话,可以打开...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: