当前位置: 首页 > 知识库问答 >
问题:

Spring Boot:在与Hibernate、JDBC和MySQL进行数小时的不活动后,通信链路出现故障[duplicate]

段干昊然
2023-03-14

如果我的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应用程序停止工作。。。

我的问题是:

  • 我怎样才能避免这个问题

编辑

这里还有其他类似/有用的问题:

  • MySQL支持的基于Hibernate的Java Servlet应用程序中的Hibernate通信链路故障
  • Spring正在失去与DB的连接,无法恢复或重新连接
  • 警告SqlExceptionHelper:143-SQL错误:0,SQLState:08S01-SqlExceptionHelper:144-通信链路故障
  • SQL错误:0,SQLState:08S01通信链路故障
  • https://serverfault.com/questions/89955/unable-to-connect-to-mysql-through-jdbc-connector-through-tomcat-or-externally
  • 用JDBC和MySQL解决“通信链路故障”

从以上参考资料中,我可以得出结论,一种解决方案是添加C3p0作为附加库,并对其进行适当配置,以避免通信链路错误。。

这是我唯一的解决办法吗?难道没有一个解决方案与Spring/Spring Boot更“集成”吗(即不添加外部库)?

共有1个答案

彭令秋
2023-03-14

我解决了这里描述的问题: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
 类似资料:
  • 我有一个带有JDBC mysql连接的服务器,但每天早上检查服务器时都会出现这样的错误: 在com.mysql.jdbc.mysqlio.readfly(mysqlio.java:1395)在com.mysql.jdbc.mysqlio.reuseandreadpacket(mysqlio.java:1539)在com.mysql.jdbc.mysqlio.checkerrorpacket(mys

  • 我在Stackoverflow的另一个问题中尝试了这个建议,并在连接方面做了如下更改 但我的项目还是失败了 严重:执行身份验证com时发生异常。mysql。jdbc。例外情况。jdbc4。通信异常:通信链路故障 谁能告诉我克服这个问题的最好方法是什么?

  • 我正在与spring boot、hibernate和MySQL合作。在运行应用程序时,它按照预期运行得很好。但是在制作docker-compose文件并使用mysql docker映像运行app docker映像时,它会出现这个错误。 错误com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败java.net.ConnectEx

  • 我用java从MySQL查询了一些记录。但是在一些查询中,我遇到了一个问题,使查询失败,但在其他情况下,它查询成功。错误消息是下一个: 我尝试过一些方法,比如: 在 但什么都没发生。 我的环境是: MySQL: 5.5.3-m3-log源代码分布 Java: 1.60_16 jdk: HotSpot(TM)64位服务器VM(构建14.2-b01,混合模式) JDBC: mysql连接器-java-

  • 我们正在运行一个带有Spring Hibernate MySql的J2EE应用程序,该应用程序在内部使用C3P0和Connector/J进行连池。 C3P0 C3P0配置 我的应用程序在一段时间后内部调用存储过程,我遇到以下错误 错误日志 现在,当我查看数据库日志时,我发现大多数查询都处于“创建排序索引”状态,如下所示 有人能帮我吗... 编辑 1.c3p0初始化日志

  • 这是一个错误: 无databaseCom.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败 从服务器成功接收的最后一个数据包是在1,325毫秒前。最后一个成功发送到服务器的数据包是在1,316毫秒之前。 这是我的代码: