开发者社区> 问答> 正文

偶尔出现communications link failure during rollback().

从1.1.3升级到1.1.6后 大概每10几分钟就会出现一次异常

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Communications link failure during rollback(). Transaction resolution unknown. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_131] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_131] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_131] at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_131] at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) ~[mysql-connector-java-5.1.40.jar!/:5.1.40] at com.mysql.jdbc.Util.getInstance(Util.java:408) ~[mysql-connector-java-5.1.40.jar!/:5.1.40] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:918) ~[mysql-connector-java-5.1.40.jar!/:5.1.40] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:897) ~[mysql-connector-java-5.1.40.jar!/:5.1.40] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:886) ~[mysql-connector-java-5.1.40.jar!/:5.1.40] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860) ~[mysql-connector-java-5.1.40.jar!/:5.1.40] at com.mysql.jdbc.ConnectionImpl.rollback(ConnectionImpl.java:4602) ~[mysql-connector-java-5.1.40.jar!/:5.1.40] at com.mysql.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:4233) ~[mysql-connector-java-5.1.40.jar!/:5.1.40] at com.mysql.jdbc.ConnectionImpl.close(ConnectionImpl.java:1531) ~[mysql-connector-java-5.1.40.jar!/:5.1.40] at com.alibaba.druid.filter.FilterChainImpl.connection_close(FilterChainImpl.java:175) ~[druid-1.1.6.jar!/:1.1.6] at com.alibaba.druid.filter.stat.StatFilter.connection_close(StatFilter.java:261) ~[druid-1.1.6.jar!/:1.1.6] at com.alibaba.druid.filter.FilterChainImpl.connection_close(FilterChainImpl.java:171) ~[druid-1.1.6.jar!/:1.1.6] at com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl.close(ConnectionProxyImpl.java:115) ~[druid-1.1.6.jar!/:1.1.6] at com.alibaba.druid.util.JdbcUtils.close(JdbcUtils.java:73) [druid-1.1.6.jar!/:1.1.6]

配置: defaultAutoCommit=false timeBetweenEvictionRunsMillis=60000 minEvictableIdleTimeMillis=30000 validationQuery=SELECT 'x' testWhileIdle=true testOnBorrow=true testOnReturn=true

MySql5.7.17 wait_timeout 100

原提问者GitHub用户gundamff

展开
收起
山海行 2023-07-05 20:34:27 111 0
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    可能是由于数据库连接断开或者网络故障等原因导致的。这种情况下,您可以尝试以下几种解决方法:

    检查数据库连接是否正常:首先,您需要检查数据库连接是否正常。可以通过在应用程序中添加日志输出或者使用数据库连接池监控工具来检查连接是否正常。如果连接异常断开,可能是由于数据库服务器宕机、网络故障等原因导致的。您可以尝试重启数据库服务器或者检查网络连接是否正常。

    调整数据库连接池配置:如果您的应用程序使用连接池来管理数据库连接,可以尝试调整连接池的配置参数,例如增加连接池的最大连接数、调整连接的最大空闲时间等。这样可以增加连接池的容错能力,避免因连接过多或者连接空闲时间过长而导致连接断开。

    使用较新的数据库驱动程序:如果您使用的是较旧的数据库驱动程序,可能存在一些已知的连接问题。您可以尝试升级到较新的数据库驱动程序,以避免这些问题。同时,建议您使用官方推荐的驱动程序版本,并避免使用非官方或者不稳定的驱动程序。

    检查数据库服务器负载:如果数据库服务器负载过高,可能会导致连接超时或者连接断开。您可以检查数据库服务器的负载情况,并尝试优化数据库查询、增加服务器资源等方式来降低负载。

    2023-07-30 13:57:06
    赞同 展开评论 打赏
  • 看看加上autoReconnect=true&failOverReadOnly=false能不能解决,我配置的validation-query=SELECT 1 FROM DUAL,test-while-idle=true

    原回答者GitHub用户xielaixiaohun

    2023-07-06 11:52:34
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载