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

MySQL数据库在8小时后断开连接。如何预防?

彭高畅
2023-03-14

我们有一个使用Spring和Hibernate用Java8编写的应用程序。

我们在prod和dev环境中都使用MySQL数据库。该数据库每天使用一次,流程从晚上11点开始。有时甚至没有人使用prod数据库,所以在8个小时的不活动之后,MySQL数据库正在断开连接。当流程开始时,我们会得到一个错误:

Exception occured: org.hibernate.exception.GenericJDBCException: Cannot release connection 

然后,当有人在最初的失败后手动启动该过程时,一切都正常了。

似乎第一次连接(自动)尝试以某种方式触发MySQL数据库站起来,第二次(手动)尝试没有问题,导致MySQL数据库启动并运行...

我们有三个想法:

  1. 在我们应用程序的代码中,使用一个触发器,该触发器将在进程开始前大约10-15分钟尝试连接到数据库(但它仍会引发此异常,这不好)
  2. 将MySQL上的8小时空闲计时器设置为24小时或更长时间
  3. 在spring数据库中配置JDBC驱动程序。xml以某种方式,它会每隔4小时“ping”一次数据库,以保持它的活力,但我们仍然不知道如何正确地执行它

(这三个想法中)哪一个似乎是最好的?我们个人认为第三种解决方案是最好的。。。但是如何将JDBC驱动程序配置为每隔4小时左右“ping”一次数据库呢?或者你们中的某个人会有另一个更好的主意?

非常感谢

哪个主意最好?

共有2个答案

颜宸
2023-03-14

解决方案2是解决这个问题的最少工作量,可能是最常见的方法。

Log in to your server using SSH.

Edit my.cnf (the MySQL configuration file).

sudo vi /etc/my.cnf

找到超时配置并调整它以适合您的服务器。

设置等待\u超时=86400=24小时。

冯哲彦
2023-03-14

您可以使用jdbc url中的auto重新连接参数来解决此问题。例如:

MYSQL_URL=jdbc:mysql://10.*.*.0:3306/ABC?autoReconnect=true
 类似资料:
  • 问题内容: 我使用 惰性连接 来连接到数据库对象中的数据库。从根本上讲,这意味着直到处理完第一个查询后,它才会调用mysql_connect(),并且此后它随后将跳过重新连接。 现在,我的数据库类中有一个方法,该方法几乎可以调用和设置(因此该方法将知道再次连接到数据库)。应该在每个查询之后(作为私有函数)还是通过对象从外部调用此方法……因为我在想类似的东西(代码仅是示例) 现在,如果它在每次查询后

  • 本章介绍如何从OrientDB命令行断开与特定数据库的连接。 它关闭了当前打开的数据库。 以下语句是Disconnect命令的基本语法。 注 - 只有在连接到特定数据库后才能使用此命令,并且只会关闭当前运行的数据库。 示例 在这个例子中,我们将使用在前一章中创建的名为的数据库。 我们将从数据库断开连接。 可以使用以下命令断开数据库连接。 如果它成功断开连接,将获得以下输出 -

  • 问题内容: 我有一个tomcat实例设置,但是在一段时间不活动之后,我在其中配置的数据库连接不断消失。 当我检查日志时,出现以下错误: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:从服务器成功接收到的最后一个数据包是68051秒前。成功发送到服务器的最后一个数据包是68051秒前,比服务器配置的“ wait_timeout”值长。

  • 我正在尝试使用SpringBoot连接MySQL数据库,但我遇到以下错误: 应用程序无法以类路径启动:[文件:/C:/Dev/Repositorios/jira quality/target/classes/,文件:/C:/Users/jboscod/.m2/repository/mysql/mysql连接器java/8.0.21/mysql-connector-java-8.0.21.jar,文

  • 我有一个几乎功能齐全的实时数据库存在系统,如这里所述,但我遇到了一些问题。似乎即使在不久前断开连接后,人们仍然保持在线状态。我不知道为什么,但我暂时向未经身份验证的请求开放了我的安全规则,但无济于事。这可能是由于此处描述的错误。 如果问题是梯子,那么避免这个问题的正确JavaScript实现是什么?每 60 分钟重新创建一次“断开连接”侦听器是一个好的解决方案吗?作为参考,我使用的代码如下所示:

  • 问题内容: 在PHP中执行类似的操作,我可以成功登录到MySQL服务器。我已经安装了ODBC连接器。但是在上面的VBA代码中,我失败了。出现错误。(请参阅存在错误的代码) 问题答案: Ranjit的代码导致了与Tin报告相同的错误消息,但是在使用我正在运行的ODBC驱动程序更新Cn.open之后起作用。检查“ ODBC数据源管理器”中的“驱动程序”选项卡。我的说“ MySQL ODBC 5.3 U