无法在Spring Boot/JDBI/MySQL应用程序中配置HikariCP

Unable to configure HikariCP in Spring Boot/JDBI/MySQL application

提问人:James A Cubeta 提问时间:4/17/2019 更新时间:4/17/2019 访问量:639

问:

我正在构建一个 MariaDB 托管数据库的 RESTful 接口,但我无法弄清楚如何正确配置 HikariCP,以便我的数据库连接在服务器空闲一段时间后不会超时。

我在 Linux、Java 1.8 上,我的数据库服务器是 MariaDB 5.5.60。我的应用程序使用以下技术堆栈:

  • spring-boot-starter-jdbc:2.0.1
  • spring-boot-data-rest:2.0.1
  • JDBI3核:3.1.0
  • JDBI3-SQL对象:3.1.0
  • mysql连接器java:5.1.46
  • HikariCP:2.7.8(通过 Spring 隐式提供)

我的application.properties文件目前如下所示:

   spring.datasource.url=jdbc:mysql://localhost/my_database
   spring.datasource.username=myusername
   spring.datasource.password=myp@ssw0rd
   spring.datasource.driver-class-name=com.mysql.jdbc.Driver
   # 15 min * 60 sec * 1000 ms = 900000
   spring.datasource.hikari.maxLifetime=900000

“maxLifetime”值将被忽略。我在这个文件中尝试了各种与 Hikari 相关的东西(许多都可以在 SO 上找到),但它们似乎都不起作用。当我在服务器闲置一夜后尝试访问服务器时,我收到以下警告:

com.zaxxer.hikari.pool.ProxyConnection: HikariPool-1 - Connection com.mysql.jdbc.JDBC4Connection@140ae1bb marked as broken because of SQLSTATE(08S01) ,ErrorCode(0)
com.mysql.jdbc.exception.jdb4.CommunicationsException: The last packet successfully received from the server was 422,968,077 milliseconds ago. The last packet sent successfully to the server was 422,968,086 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.

...然后是一堆错误和堆栈痕迹,我就不多说了。

我的直觉告诉我,我的application.properties文件中缺少一些神奇的参数组合,但我不知所措。我也不知道如何验证它是否确实有效而不必等待一夜。

任何帮助都是值得赞赏的!

mysql spring-boot JDBC MariaDB hikaricp

评论

0赞 Anatolii Stepaniuk 5/23/2019
你好!你如何解决这个问题?遇到类似堆栈的问题Connection is closed
0赞 James A Cubeta 5/23/2019
我没有在解决这个问题方面取得任何进展。我的直觉告诉我,问题出在JDBI或Spring上。我正在考虑直接与这些社区联系。如果我找到解决方案,我会在这里发布。
0赞 Anatolii Stepaniuk 5/24/2019
你能提供你的存储库代码吗?
0赞 James A Cubeta 5/24/2019
我的代码没有在公共存储库中。

答: 暂无答案