使用DruidDataSource 做数据源时,如果创建的连接在长时间得不到调用后会报如题所示的错误
discard long time none received connection. ,
jdbcUrl : jdbc:mysql://localhost:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=CTT,
jdbcUrl : jdbc:mysql://localhost:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=CTT,
lastPacketReceivedIdleMillis : 299303
解决办法
第一种,设置参数,取消测试
setTestWhileIdle(false)
第二种,增加配置,没试过
druid.mysql.usePingMethod=false
第三种
Druid 默认每 60s 运行一次空闲连接回收器,所以超过 60s 没有使用的连接会被释放,并打印 WARN 日志 discard long time none received connection 。 出现这个警告可能是业务中执行 SQL 操作的间隔时间比较长。
解决办法是,将连接空闲时间 timeBetweenEvictionRunsMillis 设置大一些,比如设置为 5 分钟:
spring.datasource.druid.time-between-eviction-runs-millis=300000
第四种
最新消息 使用1.1.22的版本 或者升级到1.2.9或以上
我的理解是testwhileidle可以是为true,但是这时必须给validationquery
添加校验的sql语句,但是我添加了依然报错,所以我就不提了