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值
- 借用Navicat工具在查询命令窗口进行修改
- 后台登录mysql管理控制台进行修改
- mysql -uroot -p 先进入到MYSQL数据库
- mysql> show global variables like '%time%' ;
- SET GLOBAL wait_timeout = 288000;
继续阅读
微信公众号
分享IT信息技术、北海生活的网站。提供北海本地化的信息技术服务。