最近发现应用隔段时间就不可用了,发现有如下的错误日志:
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 45,012,127 milliseconds ago. The last packet sent successfully to the server was 45,012,127 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.
经查,是因为默认的mysql的超时时间设置导致的:如果连接空闲超过8小时(即没有任何数据库操作),mysql会自动的断开与应用的链接,但可通过重启tomcat(或者其他web容器)的方式来解决。
以下是解决方案:
方案一
如果你的jdbc链接的url上没有autoReconnect=true参数的话,就添加类似下面的参数:
jdbc.url = jdbc:mysql ://ipaddress: 3306/database?autoReconnect=true&autoReconnectForPools=true
&failOverReadOnly=false
方案二
如果你使用了hibernate的话,还可以用下面的方式来配置:
<property name=”connection.autoReconnect”>true</property>
<property name=”connection.autoReconnectForPools”>true</property>
<property name=”connection.is-connection-validation-required”>true</property>
如果你使用的是c3p0连接池,可以这样配置:
<property name=”hibernate.c3p0.acquire_increment”>1</property>
<property name=”hibernate.c3p0.idle_test_period”>0</property>
<property name=”hibernate.c3p0.timeout”>0</property>
<property name=” hibernate. c3p0.validate”> true </property>
方案三
最坏的方案:修改mysql的配置问加你my.cnf,wait_timeout 31536000就是一年,够长了:
[Mysqld]
wait_timeout = 31536000
interactive_timeout = 31536000
修改后,重启即可
或者参考这篇文章http://www.2cto.com/database/201312/261593.html动态修改超时时间。
值得注意的是,这种设置方法会对有的mysql上的所有数据库和所有客户端都有效,而往往不同的应用对超时时间的要求可能不尽相同,所以这种方法需要慎重使用。
Reference
http://www.databaseskill.com/2615216/
http://www.2cto.com/database/201312/261593.html
相关推荐
解决连接超时问题需要从多方面考虑,包括调整 wait_timeout 参数的值、使用 Connector/J 连接属性、及时释放连接等方法。只有通过合适的方法,才能避免连接超时问题的出现,提高系统性能和稳定性。
3. **事务支持**:MySQL Connector/J支持JDBC的事务控制,包括`Connection.setAutoCommit()`、`Connection.commit()`和`Connection.rollback()`等方法,允许开发者在需要时启用或禁用自动提交,并处理事务的提交和...
7. **配置选项**:MySQL Connector/J支持多种连接参数,如`useSSL`(是否使用SSL加密连接)、`characterEncoding`(字符编码)、`autoReconnect`(自动重连)等,以满足不同应用场景的需求。 8. **兼容性**:5.1.x...
6. **配置参数**:MySQL Connector/J支持多种配置参数,如`useUnicode=true`、`characterEncoding=utf8`用于设置字符编码,`autoReconnect=true`用于确保断线后自动重连等。 7. **兼容性与版本**:5.1.5版本的MySQL...
7. **配置参数**:MySQL Connector/J有许多可配置的属性,如`useSSL`、`autoReconnect`、`useServerPrepStmts`等,它们可以调整驱动的行为以满足不同应用场景的需求。 8. **兼容性**:此版本5.1.46支持MySQL 5.x...
《Nacos插件与MySQL Connector/J 8.0.19的深度理解与应用》 在现代企业级的分布式系统中,Nacos作为一款优秀的动态服务发现、配置管理和服务管理平台,扮演着至关重要的角色。而MySQL作为广泛使用的开源关系型...
MySQL Connector/J,通常被称为mysql-connector-java,是MySQL官方提供的用于Java应用程序与MySQL数据库进行连接的JDBC(Java Database Connectivity)驱动程序。它是Java开发者在Java应用中与MySQL数据库交互的关键...
MySQL Connector/J 3.0.12 是 MySQL 官方提供的用于 Java 应用程序连接 MySQL 数据库的驱动程序。这个压缩包包含了该版本的驱动程序及相关文件,为开发者提供了在 Java 平台上与 MySQL 数据库进行交互的能力。以下是...
MySQL Connector/J 5.1.36 是 MySQL 官方提供的用于 Java 应用程序连接 MySQL 数据库的驱动程序。这个版本的驱动适用于与 MySQL 5.5 和 5.6 服务器版本进行通信,是Java开发人员在处理MySQL数据库时不可或缺的组件。...
3. 使用 Connector/J 连接属性 'autoReconnect=true',避免连接超时的问题。 结论 MySQL 连接超时问题是常见的错误之一,解决该问题需要了解 wait_timeout 参数的重要性,并正确地使用 show variables 命令。同时...
这个JAR文件是MySQL Connector/J的组成部分,它是MySQL官方支持的Java数据库连接(JDBC)驱动程序。 1. **JDBC驱动程序**: JDBC是Java编程语言中的一个标准接口,允许Java应用程序通过Java代码与各种类型的数据库...
MySQL的`wait_timeout`连接超时问题通常出现在长时间无操作的数据库连接上,服务器会自动关闭这些连接以释放资源。这种现象在应用中可能导致突然的数据通信中断,表现为“Communications link failure”等错误,提示...
autoReconnect=true</property> <property name="user">root</property> <property name="password">password</property> <property name="initialPoolSize">10</property> <property name="minPoolSize">10</...
MySQL JDBC URL(Java Database Connectivity Uniform Resource Locator)是Java应用程序连接MySQL数据库时使用的字符串,它包含了数据库连接所需的各项配置信息。这篇博文将详细解释MySQL JDBC URL的各个参数及其...
<artifactId>mysql-connector-java</artifactId> <version>8.0.25</version> </dependency> 驱动 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver 路径 spring.datasource.url=jdbc:mysql://...
8. **配置属性**:MySQL Connector/J支持多种配置属性,如`useSSL=false`用于禁用SSL连接,`autoReconnect=true`确保断线后自动重连。 9. **兼容性**:5.1.x系列的JDBC驱动对MySQL 5.0到5.7版本有良好的兼容性,...
在本例中,我们有两个版本的MySQL Connector/J,即MySQL的JDBC驱动程序:`mysql-connector-java-5.0.8-bin.jar`和`mysql-connector-java-5.0.4-bin.jar`。 1. **MySQL Connector/J**: 这是MySQL官方提供的JDBC驱动...
<property name="hibernate.c3p0.timeout">120</property> <property name="hibernate.c3p0.max_statements">100</property> <property name="hibernate.c3p0.idle_test_period">120</property> <property name=...
MySQL数据库的连接超时问题,通常表现为Wait_timeout错误,指的是当客户端与服务器之间的连接在指定时间内没有进行任何数据交互,数据库会自动断开这个连接,以释放资源并防止不必要的资源占用。这一特性在MySQL中是...