问题:
com.mysql.jdbc.CommunicationsException: The last packet successfully received from the server was58129 seconds ago.The last packet sent successfully to the server was 58129 seconds ago, which 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.
这是由于连接闲置时间超过8小时,mysql就会自动断开连接。
解决办法:
- 如果是mysql 4之前的版本,可以按照提示在JDBC URL中使用autoReconnect属性,jdbc:mysql://linkscholar.org:3306/db?&autoReconnect=true。但是5之后就不起作用了。
- 如果使用hibernate的话,可以添加配置:
<property name="connection.autoReconnect">true</property> <property name="connection.autoReconnectForPools">true</property> <property name="connection.is-connection-validation-required">true</property>
3. 如果使用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>
4. 从数据库本身解决(默认是28800,也就是8个小时):
一种方式是,在mysql的配置文件中加入以下内容:
[mysqld]
wait_timeout=3153600
interactive_timeout=3153600
保存后,重新启动mysql。
第二种方式是,在mysql控制台里进行修改:
set global wait_timeout=3153600;
set global interactive_timeout=3153600;
设置完成后,可以通过mysql控制台的
show global variables like '%wait_timeout%';
命令查看:
这里我设置为30天,注意要加上global,不然查询的是会话变量。
5. 使用ibatis的话,可以在数据源中加入以下检测配置:
<property name="Pool.PingEnabled" value="true"/> <property name="Pool.PingQuery" value="select 1"/> <property name="Pool.PingConnectionsOlderThan" value="0"/> <property name="Pool.PingConnectionsNotUsedFor" value="3600000"/>
详细说明见参考3.
引用和参考:
http://blog.csdn.net/zljjava/article/details/7996091
http://hi.baidu.com/thinkinginlamp/item/2ddb2237a741d120b2c0c5fb
http://www.blogjava.net/usherlight/archive/2008/05/13/200164.html
相关推荐
nodejs 关于mysql模块 连接超时自动断开解决方法,在这块遇到的坑,而且坑了很久才找到的,分享只为求分
可以直接通过设置来达到重连问题,方法很简单,里面有复现自动断开连接导致不能正常插入数据的方法,是自己没有积分所以才要积分
网上找了很多解决办法,几乎没有一个能完美解决问题的,大体都是首先执行一段query后看返回结果,但这个办法也太无用和耗费资源了吧...因为断开后isOpen和isValid都会返回true,所以不能从这里入手...
MySQL 连接超时问题解决方案 wait_timeout 参数的重要性 在 MySQL 中,wait_timeout 参数是控制连接超时的关键参数。当该参数设置的太大时,可能会导致 MySQL 中大量的 SLEEP 进程无法及时释放,拖累系统性能。...
MySQL 连接超时问题解决方案 在 MySQL 中,wait_timeout 参数控制着连接的超时时间,如果设置的过大,可能会导致大量的 SLEEP 进程无法及时释放,拖累系统性能;反之,如果设置的过小,可能会遭遇到“MySQL has ...
总结来说,解决MySQL8小时空闲后连接超时问题的方法包括修改MySQL的启动参数或配置文件,以及优化应用程序的数据库连接管理,如使用连接池。同时,关注数据库性能优化,如使用合适的查询语句和数据类型,可以提升...
本文将介绍几种解决MySQL锁表问题的方法。 1. **查看并杀死锁定进程** 使用`SHOW PROCESSLIST`命令可以查看当前所有正在执行的SQL语句及其状态,包括是否被锁定。如果发现有锁定的进程,可以使用`KILL`命令来终止...
本文主要介绍了在使用PHP语言进行微信开发时,遇到Token验证失败和请求URL超时问题时的解决方法,以及导致这些问题的原因。 首先,Token验证失败的原因主要是因为配置文件中的Token设置不正确。Token是微信开发平台...
总之,MySQL的连接超时问题主要是由`wait_timeout`参数引发的,解决方法包括但不限于调整MySQL服务器配置、使用连接池、更新应用程序代码以处理连接失效的情况,以及在使用ORM框架时,按照框架的文档配置相应的连接...
MySQL数据库在运行过程中可能会遇到“Too many connections”的错误提示,这意味着服务器上的MySQL实例...通过上述方法,可以有效管理和解决MySQL中的“Too many connections”问题,确保数据库服务的稳定性和性能。
MySQL的`wait_timeout`连接超时问题通常出现在长时间无操作的数据库连接上,服务器会自动关闭这些连接以释放资源。这种现象在应用中可能导致突然的数据通信中断,表现为“Communications link failure”等错误,提示...
本文主要总结了针对Windows 2003 + IIS 6.0 + PHP + MySQL环境的一些常见疑难杂症及其解决办法。 首先,针对Windows 2003 + IIS 6.0 + php(ISAPI)环境下w3wp.exe占用CPU资源过高的问题。这通常是由于PHP的session...
### MySQL常见错误提示及其解决方法 #### 1....以上列举了MySQL中常见的错误代码及其可能的原因与解决办法。针对不同的错误代码,开发者需要采取适当的措施来解决问题,确保数据库系统的稳定运行。
本文档旨在总结MYSQL 数据库常见问题的诊断和解决方法,涵盖日志、内存、I/O、句柄数、保留策略等五个方面。 日志诊断 在生产环境下,当 MYSQL 数据库出现问题时,首先需要查看报警日志,确定数据库的问题。通常,...
本文将详细介绍MySQL中的死锁现象、其产生的原因以及如何有效地检测与解决死锁问题。 #### 一、死锁定义 死锁是指两个或两个以上的事务在执行过程中,由于每个事务都持有某些资源且又都在等待其他事务释放其持有的...
Durid 连接 Mycat+MySQL 过程中报 1243...Durid 连接 Mycat+MySQL 过程中报 1243 错误的解决办法需要对问题进行分析和检查,检查 Durid 和数据库中间件代理软件的配置参数,确保它们的参数匹配,以避免错误信息的出现。
总之,结合Shell脚本和Linux的`cron`服务,可以实现对MySQL超时Locked进程的自动监控和清理,这对于维护高可用性和高性能的数据库系统至关重要。同时,这也体现了DevOps理念,通过自动化手段减轻运维人员的工作负担...
本文将详细探讨“还原大备份mysql文件失败的解决方法”,以及相关的关键参数及其作用。 当尝试还原大型MySQL数据库备份文件时,可能会遇到错误,这通常与服务器的配置限制有关。在Navicat等管理工具中,这些问题...