如果我的Spring Boot应用程序在几个小时内(例如在夜间)处于非活动状态,则会出现此错误:
2015-05-19 09:16:32.666 WARN 20582 --- [http-nio-8080-exec-6] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 08S01
2015-05-19 09:16:32.668 ERROR 20582 --- [http-nio-8080-exec-6] o.h.engine.jdbc.spi.SqlExceptionHelper : Communications link failure
The last packet successfully received from the server was 29.792.613 milliseconds ago. The last packet sent successfully to the server was 6 milliseconds ago.
尝试解决这个问题我读到 MySQL 有一个名为wait_timeout
的参数默认设置为8小时(28800秒),在此之后我的所有非活动连接都关闭了,所以我的Spring Boot应用程序停止工作......
我的问题是:
修改
此处还有其他类似/有用的问题:
从上面的参考文献中我可以得出结论,一个解决方案是添加 C3p0 作为附加库并正确配置它以避免通信链接错误..
这是我唯一的解决方案吗?难道没有一个解决方案更多"集成"使用Spring / Spring Boot(即不添加外部库)?
答案 0 :(得分:15)
我解决了这里描述的问题:
http://blog.netgloo.com/2015/07/09/spring-boot-communications-link-failure-with-mysql-and-hibernate/,在application.properties
文件中添加这些配置:
spring.datasource.tomcat.testWhileIdle = true
spring.datasource.tomcat.timeBetweenEvictionRunsMillis = 60000
spring.datasource.tomcat.validationQuery = SELECT 1