mysql重连,连接丢失问题:The last packet sent successfully to the server was……

1.log错误日志:

-org.hibernate.exception.JDBCConnectionException: The last packet successfully received from the server was 51,999,860 milliseconds ago. The last packet sent successfully to the server was 51,999,860 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.

其中错误还会提示你修改wait_timeout或是使用Connector/J的autoReconnect属性避免该错误。

后来查了一些资料,才发现遇到这个问题的人还真不少,大部分都是使用连接池方式时才会出现这个问题,短连接应该很难出现这个问题。

2.这个问题的原因:

MySQL服务器默认的“wait_timeout”是28800秒即8小时,

意味着如果一个连接的空闲时间超过8个小时,MySQL将自动断开该连接,

而连接池却认为该连接还是有效的(因为并未校验连接的有效性),当应用申请使用该连接时,就会导致上面的报错。

3.解决办法:

a.按照错误的提示,可以在JDBC URL中使用autoReconnect属性,下面是我的配置

<property name="connection.url">
jdbc:mysql://localhost:3306/anxincar?autoReconnect=true
</property> 

其中红色部分为新添加的属性设置
不过网上有另一种说法,有人测试该设置只对mysql4之前的版本有效,具体是否属实还有待考证。

b.我查看了下我们服务器上安装的是mysql5.0,为了确保连接不再丢失而出现此类问题,同时修改MySQL的参数,wait_timeout最大为31536000即1年,在my.ini中加入:

[mysqld]
wait_timeout=31536000
interactive_timeout=31536000

红色部分为新添加的参数设置

最后:重启mysql服务,重启tomcat,让配置文件生效。

 

 

时间: 2024-11-06 00:03:10

mysql重连,连接丢失问题:The last packet sent successfully to the server was……的相关文章

mysql重连,连接丢失:The last packet successfully received from the server

原文地址:http://nkcoder.github.io/blog/20140712/mysql-reconnect-packet-lost/ 1.1 错误信息: Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 20,820,001 milliseconds ago. The last pac

mysql重连,连接丢失:The last packet successfully received from the server--转载

1.1 错误信息: Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 20,820,001 milliseconds ago. The last packet sent successfully to the server was 20,820,002 milliseconds ago. is l

mysql 连接丢失错误解决(转载)

1.1 错误信息: Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 20,820,001 milliseconds ago. The last packet sent successfully to the server was 20,820,002 milliseconds ago. is l

关于MySQL的wait_timeout连接超时问题报错解决方案

bug回顾 : 想必大家在用MySQL时都会遇到连接超时的问题,如下图所示: ### Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 47,795,922 milliseconds ago. The last packet sent successfully to the server was 47,7

Mysql高手系列 - 第27篇:mysql如何确保数据不丢失的?我们借鉴这种设计思想实现热点账户高并发设计及跨库转账问题

Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能. 欢迎大家加我微信itsoku一起交流java.算法.数据库相关技术. 这是Mysql系列第27篇. 本篇文章我们先来看一下mysql是如何确保数据不丢失的,通过本文我们可以了解mysql内部确保数据不丢失的原理,学习里面优秀的设计要点,然后我们再借鉴这些优秀的设计要点进行实践应用,加深理解. 预备知识 mysql内部是使用b+树的结构将数据存储在磁盘中,b+树中节点对应mysql中的页,mysql和磁盘交互的最小

MySql WorkBench 本地连接问题

本文参考:http://blog.csdn.net/better_space/article/details/53523353 http://blog.csdn.net/u012730299/article/details/51840416 最近在做java服务端程序,理所当然的安装了Mysql.但是连接出现了问题. 如下:

MySQL开启远程连接的方法

原文地址 http://www.cnblogs.com/linjiqin/p/5270938.html 配置mysql允许远程连接的方法 默认情况下,mysql只允许本地登录,如果要开启远程连接,则需要修改/etc/mysql/my.conf文件. 一.修改/etc/mysql/my.conf找到bind-address = 127.0.0.1这一行改为bind-address = 0.0.0.0即可 二.为需要远程登录的用户赋予权限1.新建用户远程连接mysql数据库grant all on

php使用mysql和mysqli连接查询数据

mysql: <?php $code = $_POST['code']; $status = ""; $success = ""; $scookies = ""; try { $dbname="root"; $dbpass="root"; $dbhost="127.0.0.1"; $dbdatabase="mysql"; //生成一个连接 $db_connect

MySQL的TIME_WAIT连接过多的解决方法

今天上MySQL服务器看了下并发,发现了以下情况 MySQL的TIME_WAIT连接过多,吓了我一跳,因为这个服务器我很少去管理,今天突然想上来看看,发现了这个问题.以下是我的解决方法 [[email protected] data]# ss -an | grep 3306 | wc -l 1402[[email protected] data]#mysql -uroot -p mysql> show variables like "time_timeout"; | wait_t