从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
可能是由于数据库连接断开或者网络故障等原因导致的。这种情况下,您可以尝试以下几种解决方法:
检查数据库连接是否正常:首先,您需要检查数据库连接是否正常。可以通过在应用程序中添加日志输出或者使用数据库连接池监控工具来检查连接是否正常。如果连接异常断开,可能是由于数据库服务器宕机、网络故障等原因导致的。您可以尝试重启数据库服务器或者检查网络连接是否正常。
调整数据库连接池配置:如果您的应用程序使用连接池来管理数据库连接,可以尝试调整连接池的配置参数,例如增加连接池的最大连接数、调整连接的最大空闲时间等。这样可以增加连接池的容错能力,避免因连接过多或者连接空闲时间过长而导致连接断开。
使用较新的数据库驱动程序:如果您使用的是较旧的数据库驱动程序,可能存在一些已知的连接问题。您可以尝试升级到较新的数据库驱动程序,以避免这些问题。同时,建议您使用官方推荐的驱动程序版本,并避免使用非官方或者不稳定的驱动程序。
检查数据库服务器负载:如果数据库服务器负载过高,可能会导致连接超时或者连接断开。您可以检查数据库服务器的负载情况,并尝试优化数据库查询、增加服务器资源等方式来降低负载。
看看加上autoReconnect=true&failOverReadOnly=false能不能解决,我配置的validation-query=SELECT 1 FROM DUAL,test-while-idle=true
原回答者GitHub用户xielaixiaohun
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。