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には、デフォルトで8時間(28800秒)に設定されたwait_timeout
という名前のパラメーターがあります。非アクティブな接続がすべて閉じられたため、SpringBootアプリケーションが機能しなくなりました...
私の質問は次のとおりです。
[〜#〜]編集[〜#〜]
ここに他の同様の/有用な質問があります:
上記の参照から、1つの解決策は、追加のライブラリとしてC3p0を追加し、通信リンクエラーを回避するように適切に構成することであると結論付けることができます。
それは私が持っている唯一の解決策ですか? Spring/Spring Bootとより「統合」された(つまり、外部ライブラリを追加しない)ソリューションはありませんか?
私はここで説明されているように問題を解決しました: 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