使用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
重启生效,需要同时修改这两个参数。
分享到:
相关推荐
解决 MySQL+Hibernate 连接空闲8小时自动断开问题 概述: 在使用 MySQL 和 Hibernate 进行数据库持久层开发时,可能会遇到连接空闲8小时自动断开的问题。本文将讨论该问题的解决方案,并对相关的知识点进行详细...
修改 /etc/mysql/my.cnf文件,在 [mysqld] 节中设置: # Set a connection to wait 8hours in idle status. wait_timeout =86400 相关参数,红色部分 mysql> show variables like ‘%timeout%’; +————————...
MySQL+Hibernate 连接空闲8小时自动断开问题解决方案 知识点1: Hibernate 的连接池机制 在 Hibernate 中,默认情况下 使用的是 DriverManagerConnectionProvider,这是一个简单的连接池机制。它将打开的连接缓存在...
总结来说,解决MySQL8小时空闲后连接超时问题的方法包括修改MySQL的启动参数或配置文件,以及优化应用程序的数据库连接管理,如使用连接池。同时,关注数据库性能优化,如使用合适的查询语句和数据类型,可以提升...
在JavaEE应用中,MySQL数据库是...总之,处理JavaEE应用中的MySQL空闲关闭问题需要综合考虑数据库服务器的配置、连接池的管理策略以及应用本身的事务处理。正确配置和使用这些元素,可以确保应用的稳定性和资源效率。
MySQL数据库在长时间无操作的情况下,为了节省资源,会自动关闭闲置的连接,这通常被称为“8小时问题”。为了解决这个问题,开发者通常需要采取特定的策略,比如使用连接池。在本案例中,我们看到一种解决方案,即...
MySQL连接池在Java应用开发中扮演着至关重要的角色,它是一种管理数据库连接的机制,能够有效地提高数据库操作的性能和效率。在这个项目中,我们看到的是一个纯手工编写的Java源码实现,不依赖任何外部数据库驱动,...
MySQL在空闲连接达到一定时间(默认8小时,即`wait_timeout`参数设定的时间)后会自动断开这些连接,以节省系统资源。然而,一些连接池如c3p0可能没有及时检测到这种变化,仍尝试使用已被MySQL断开的连接,导致应用...
MySQL默认的会话超时时间是8小时,超过这个时间未使用的连接会被自动断开。对于长时间运行的应用,这可能导致连接失效,进而影响应用程序的稳定性。通过使用Proxool,我们可以设置连接的生命周期,确保即使超过了...
此时,Tomcat将能够正确地管理数据库连接,并在连接断开时自动尝试重新建立连接,大大提高了应用的稳定性和可用性。 #### 八、总结 通过上述步骤,我们详细介绍了如何在Tomcat6中配置连接池,并实现了数据库连接的...
这个问题是由于 Mysql 的.wait_timeout 参数所致,默认情况下,wait_timeout 的值是 8 小时,如果连接空闲时间超过 8 小时,Mysql 将自动关闭这个连接。 导致断连的原因是 Mysql 的默认行为。Mysql 在发现一个连接...
1. **连接池初始化**:在应用启动时,数据连接池会预先创建一定数量的数据库连接,这些连接被称为“空闲连接”并存储在池中,等待应用程序使用。 2. **连接获取与释放**:当应用需要访问数据库时,不再直接创建新的...
本篇文章将深入探讨MySQL的连接数据问题,旨在帮助用户理解和解决在数据库操作过程中遇到的连接问题。 一、MySQL连接方式 1. 命令行连接:通过终端或命令提示符输入`mysql -u username -p`,然后输入密码,可以直接...
MySQL数据库的连接超时问题,通常表现为Wait_timeout错误,指的是当客户端与服务器之间的连接在指定时间内没有进行任何数据交互,数据库会自动断开这个连接,以释放资源并防止不必要的资源占用。这一特性在MySQL中是...
异常发生的原因在于MySQL服务器默认设置了一个超时时间(`wait_timeout`),如果一个连接长时间未被使用,则MySQL会自动断开这个连接。在这个案例中,C3P0连接池中的某些连接由于长时间空闲而被MySQL服务器断开,...
MySQL的`wait_timeout`连接超时问题通常出现在长时间无操作的数据库连接上,服务器会自动关闭这些连接以释放资源。这种现象在应用中可能导致突然的数据通信中断,表现为“Communications link failure”等错误,提示...
而连接的建立、断开都由连接池自身来管理。 同时,还可以通过设置连接池的参数来控制连接池中的初始连接数、连接的上下限数以及每个连接的最大使用次数、最大空闲时间等等。 也可以通过其自身的管理机制来监视...
查阅相关文档后发现,造成报错的原因是:MySQL的默认设置为当一个连接的空闲时间超过8小时后,MySQL就会断开该连接,而C3P0连接池则以为被断开的连接依然有效。在这种情况下,如果客户端代码向C3P0连接池请求连接的...
这是因为防火墙会每隔一段时间自动断开数据库连接,导致应用程序无法连接数据库。为了解决这个问题,需要在 application.properties 文件中配置数据源。 配置数据源 在 application.properties 文件中,可以配置...