java - 如何解决异常:丢弃连接
问题描述
当我用druid做我的数据库连接池,连接MySQL时,总是出现连接异常:discard connection。
我使用:jdk8 maven3.6 MySQL56 mysql-connect-java 5.1.49 druid1.1.22
Linux
有我的日志:
[ERROR] 2020-07-07 08:59:11,492
discard connection
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Communications link failure during commit(). Transaction resolution unknown.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
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:403)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861)
at com.mysql.jdbc.ConnectionImpl.commit(ConnectionImpl.java:1549)
at com.alibaba.druid.filter.FilterChainImpl.connection_commit(FilterChainImpl.java:199)
at com.alibaba.druid.filter.stat.StatFilter.connection_commit(StatFilter.java:267)
at com.alibaba.druid.filter.FilterChainImpl.connection_commit(FilterChainImpl.java:194)
at com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl.commit(ConnectionProxyImpl.java:122)
at com.alibaba.druid.pool.DruidPooledConnection.commit(DruidPooledConnection.java:755)
at com.mytest.util.mysqlDbUtils.MysqlDbUtils.executeBatch(MysqlDbUtils.java:58)
at com.mytest.util.mysqlDbUtils.MysqlDbUtils.executeBatchNew(MysqlDbUtils.java:156)
at com.mytest.kafkadpu.analysisData.eventData.EventDataDealUnit.dealData(EventDataDealUnit.java:72)
at com.mytest.kafkadpu.consumerGroup.ConsumerDealDataThread.run(ConsumerDealDataThread.java:121)
而我的配置如下:
url=mysql connection url
username=username
password=password
filters=stat
initialSize=20
minIdle=20
maxActive=100
maxWait=60000
timeBetweenEvictionRunsMillis=63000
minEvictableIdleTimeMillis=300000
validationQuery=SELECT 1
validationQueryTimeout=100
removeAbandoned=true
removeAbandonedTimeoutMillis=60000
logAbandoned=false
testWhileIdle=true
testOnBorrow=false
testOnReturn=false
poolPreparedStatements=true
maxPoolPreparedStatementPerConnectionSize=300
defaultAutoCommit=false
keepAlive=true
我尝试将 testOnBorrow 设置为 true 或 false,但它们都无效。
解决方案
放
autoReconnect=true&failOverReadOnly=false
推荐阅读
- javascript - `this` 绑定在其他文件中定义的函数中
- angular - 如何将 kendodatepicker 与可选的 formControl 填充一起使用?
- ruby - 当我第二次输入棒时,它没有像第一次那样打印分数,不知道为什么它会跳过这个
- php - Codeigniter - 如何从表中删除一行但只删除一次?
- bazel - 有没有办法用 bazel 构建测试而不运行它们?
- makefile - 使用 GNU Make 编译不存在的目标文件
- r - 您如何使用 highcharter 包为 R 中的折线图提供多个系列而不对系列进行硬编码?
- elasticsearch - 如何配置 filebeat kubernetes 守护进程以索引命名空间或 pod 名称
- npm - 如何将 npm 模块从注册表移动到本地机器
- sql - 多对多中间表删除触发删除