使用Connector/J连接MySQL数据库,程序运行较长时间后就会报以下错误:
Communications link failure,The last packet successfully received from the server was *** millisecond ago.The last packet successfully sent to the server was *** millisecond ago。
其中错误还会提示你修改wait_timeout或是使用Connector/J的autoReconnect属性避免该错误。
后来查了一些资料,才发现遇到这个问题的人还真不少,大部分都是使用连接池方式时才会出现这个问题,短连接应该很难出现这个问题。这个问题的原因:
MySQL服务器默认的“wait_timeout”是28800秒即8小时,意味着如果一个连接的空闲时间超过8个小时,MySQL将自动断开该连接,而连接池却认为该连接还是有效的(因为并未校验连接的有效性),当应用申请使用该连接时,就会导致上面的报错。
1.按照错误的提示,可以在JDBC URL中使用autoReconnect属性,实际测试时使用了autoReconnect=true&failOverReadOnly=false,不过并未起作用,使用的是5.1版本,可能真像网上所说的只对4之前的版本有效。
2.没办法,只能修改MySQL的参数了,wait_timeout最大为31536000即1年,在my.cnf中加入:
[mysqld]
wait_timeout=31536000
interactive_timeout=31536000
重启生效,需要同时修改这两个参数。
3.线上服务重启无论如何都应该尽可能避免,看看如何在MySQL命令行里通过SET来设置:
mysql> set global wait_timeout= 31536000;
mysql> show global variables like 'wait_timeout';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| wait_timeout | 31536000 |
+----------------------------+-------+
相关推荐
nodejs 关于mysql模块 连接超时自动断开解决方法,在这块遇到的坑,而且坑了很久才找到的,分享只为求分
总结来说,解决MySQL8小时空闲后连接超时问题的方法包括修改MySQL的启动参数或配置文件,以及优化应用程序的数据库连接管理,如使用连接池。同时,关注数据库性能优化,如使用合适的查询语句和数据类型,可以提升...
可以直接通过设置来达到重连问题,方法很简单,里面有复现自动断开连接导致不能正常插入数据的方法,是自己没有积分所以才要积分
标题 "Mybatis破MySql8小时断线问题1" 指的是在使用Mybatis框架与MySQL数据库交互时遇到的一个常见问题,即由于MySQL数据库的连接超时机制导致的8小时断线。描述中提到,当数据库连接闲置时间超过MySQL默认设定的8...
网上找了很多解决办法,几乎没有一个能完美解决问题的,大体都是首先执行一段query后看返回结果,但这个办法也太无用和耗费资源了吧...因为断开后isOpen和isValid都会返回true,所以不能从这里入手...
解决 MySQL+Hibernate 连接空闲8小时自动断开问题 概述: 在使用 MySQL 和 Hibernate 进行数据库持久层开发时,可能会遇到连接空闲8小时自动断开的问题。本文将讨论该问题的解决方案,并对相关的知识点进行详细...
这一特性在MySQL中是默认开启的,其默认超时时间是8小时,即28800秒。 当应用程序遇到这种问题时,一种常见的解决方案是在数据库连接字符串中添加"autoReconnect=true"选项,试图在断开连接后自动重新连接。然而,...
MySQL 连接超时问题解决方案 在 MySQL 中,wait_timeout 参数控制着连接的超时时间,如果设置的过大,可能会导致大量的 SLEEP 进程无法及时释放,拖累系统性能;反之,如果设置的过小,可能会遭遇到“MySQL has ...
MySQL的`wait_timeout`连接超时问题通常出现在长时间无操作的数据库连接上,服务器会自动关闭这些连接以释放资源。这种现象在应用中可能导致突然的数据通信中断,表现为“Communications link failure”等错误,提示...
MySQL数据库在长时间无操作的情况下,为了节省资源,会自动关闭闲置的连接,这通常被称为“8小时问题”。为了解决这个问题,开发者通常需要采取特定的策略,比如使用连接池。在本案例中,我们看到一种解决方案,即...
MySQL中的“8小时问题”是一个常见的数据库连接管理问题,尤其在使用连接池如c3p0的情况下。这个问题的根源在于MySQL服务器的默认配置与连接池的管理策略之间的不协调。MySQL在空闲连接达到一定时间(默认8小时,即`...
ODBC(Open Database Connectivity)是微软推出的一种数据库访问标准,它提供了一种统一的方式来访问不同数据库系统,包括MySQL。在本教程中,我们将探讨如何利用C#语言通过ODBC接口来构建一个简单的数据库应用程序...
这个问题是由于 Mysql 的.wait_timeout 参数所致,默认情况下,wait_timeout 的值是 8 小时,如果连接空闲时间超过 8 小时,Mysql 将自动关闭这个连接。 导致断连的原因是 Mysql 的默认行为。Mysql 在发现一个连接...
**设置连接池的连接存活时间小于 `wait_timeout`**:在 c3p0 连接池的配置中,可以设置 `maxIdleTime` 参数,使其小于 MySQL 的超时时间,这样连接池会更早地回收和关闭连接,避免因 MySQL 自动断开连接导致的问题。...
开发人员通常会配置 Druid 连接池,设定数据源属性(如最大连接数、最小连接数、超时时间等),然后通过 DruidDataSource 获取数据库连接,再使用 JDBC API 执行 SQL 语句。 总结起来,`druid1.1.10和mysql8的jdbc...
MySQL默认的会话超时时间是8小时,超过这个时间未使用的连接会被自动断开。对于长时间运行的应用,这可能导致连接失效,进而影响应用程序的稳定性。通过使用Proxool,我们可以设置连接的生命周期,确保即使超过了...
该系统旨在解决在高并发环境下频繁进行数据库连接和断开操作所带来的性能瓶颈问题。通过引入数据库连接池,系统能够有效提高数据库访问效率,减少资源消耗,从而提升整体开发效率。 ## 项目的主要特性和功能 1. ...