MySQL 5.0 以后针对超长时间数据库连接做了一个处理,即一个数据库连接在无任何操作情况下过了 8 个小时后(MySQL 服务器默认的超时时间是 8 小时),MySQL 会自动把这个连接关闭。在数据库连接池中的 connections 如果空闲超过 8 小时,MySQL 将其断开,而数据库连接池并不知道该 connection 已经失效,这个时候你请求数据库链接,连接池会将失效的 connection 给你,so~,SpringBoot 温柔的告诉你 No operations allowed after connection closed
。SpringBoot 2.0 以上版本,mysql-connector-java 默认使用的是 8.0 以上版本。
根据以上消息,我们需要配置连接池的验证功能,保持连接的心跳。设置testWhileIdle属性为true。以及validationQuery = “select 1 from dual” 。
参考文献:
Springboot_Tomcat数据库连接池配置_org.apache.tomcat.jdbc.pool.datasource-CSDN博客
SpringBoot 报 No operations allowed after connection closed 异常解决办法-腾讯云开发者社区-腾讯云