原来Springboot1.x的版本没有这个问题,升级到2.x之后,刚启动没有问题,数据库获取数据很正常,但是几分钟没有数据库操作后,定时任务连接数据库时会报超时。
HikariPool-1 - Failed to validate connection com.mysql.cj.jdbc.ConnectionImpl@4615f6a1 (No operations allowed after connection closed.). Possibly consider using a shorter maxLifetime value.
按照提示将maxLifetime参数调短发现不起作用,
而且各个参数都调成60s,超时警告依然在30s的时候触发,应该是配置方式有问题。按照各种教程试下来都没有解决问题,对于springboot的数据库连接这块不熟,但推测问题还是在数据库连接线程程序端和数据库端不同步导致的。
最终用来一种很临时的方式解决了:
定时任务里面开一个30s执行一次的任务,在里面执行一次数据库操作,确实问题没有再出现了。
Task:
@Scheduled(cron = "0/30 * * * * ?")
public void sqlConnectTest() {
if(!accountInfoService.sqlTest()){
log.info("sql连接失败");
}
}
Mybatis Mapper XML:
<select id="sqlTest" resultType="int">
select 1;
</select>
对于这块不熟,只能临时应急,希望可以遇到解决方案。