在 Spring-Boot 中与数据库的连接超出设定的时间范围被切断
使用 JPA 和 Hibernate 与 Spring-Boot 应用程序中的数据库的连接可以如果交互之间的时间超过特定限制,则会丢失。此问题通常伴随着一条错误消息,指示由于超出服务器的“wait_timeout”值而导致的连接问题。
为了解决此问题,不鼓励使用 Spring 的 testOnBorrow 和validationQuery 属性。相反,更强大的解决方案是配置以下设置:
- spring.datasource.url = jdbc:mysql://localhost:3306/test?autoReconnect=true:在 JDBC 中启用自动重新连接URL.
- spring.datasource.test-while-idle=true: 测试连接空闲。
- spring.datasource.test-on-borrow=true:在从池中借用连接之前测试连接。
- spring.datasource.validation-query=SELECT 1:使用验证查询以检查连接有效性。
- spring.datasource.time- Between-eviction-runs-millis=5000:指定连接验证的频率检查。
- spring.datasource.min-evictable-idle-time-millis=60000:定义空闲时间限制,超过该时间限制将检查连接并将其从池中删除。
为了防止事务期间活动连接出现潜在问题,建议在事务开始时验证连接,并在必要时获取新连接。
这些配置设置将启用连接的定期验证并防止过时的连接在池中累积。因此,即使长时间没有活动,与数据库的连接也应保持稳定。
以上是为什么我的 Spring Boot 数据库连接在不活动后会断开,如何防止这种情况发生?的详细内容。更多信息请关注PHP中文网其他相关文章!