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

连线北海
连线北海
管理员
201
文章
评论字数 371阅读1分14秒

Communications link failure during commit(). Transaction resolution unknown.-图片1

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工具在查询命令窗口进行修改Communications link failure during commit(). Transaction resolution unknown.-图片2
  2. 后台登录mysql管理控制台进行修改
  • mysql -uroot -p 先进入到MYSQL数据库
  • mysql> show global variables like '%time%' ;Communications link failure during commit(). Transaction resolution unknown.-图片2
  • SET GLOBAL wait_timeout = 288000;

 

继续阅读
weinxin
微信公众号
分享IT信息技术、北海生活的网站。提供北海本地化的信息技术服务。
 最后更新:2018-10-14
连线北海
  • 本文由 连线北海 发表于2018年9月4日 12:19:29
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定