MySQL server has gone away 或 lost connection to MySQL server during query

有时在使用mysql的时候会接收到“MySQL server has gone away”错误,这个错误会有以下

 

原因:

1)、mysql数据库挂了或者关闭了

之前遇到PVD那边有脚本不停的重启MySQL导致查询时会收到这样的错误。

2)、网络不稳定

3)、等待超时

Interactive_timeout:交互式客户端在断开连接之前等待活动多长时间,即服务器等待多久来读取一条命令。

手册上说在交互模式下使用的是interactive_timeout,check_connection函数在建立连接初期,如果为交互模式则将interactive_timeout值赋给wait_timeout,骗您误以为交互模式下等待超时为interactive_timeout。

Wait_timeout:在断开连接前等待任何客户端中活动的时间,默认值为28800(8小时)。。

Net_read_timeout:从客户端写入MYSQL服务器等待应答的时间。

Net_write_timeout:客户端从服务器中读取时等待的时间。

connect_out是个例外,如果你遇到了这个限制,你会得到“Lost connection to mysql at 'reading authorization packet'”错误。 



绝大多数这些限制的现象就是“mysql server has gone away”错误或者“Lost connect tomysql server during query”错误。

 

解决方案:

首先确定引起问题的原因,查看错误日志如果发现数据库挂掉或重启引起,则找到挂掉或重启的原因并解决。

临时增加*timeout变量,重新运行应用程序。如果超时频率这时变小,你可以肯定是超时时间的问题,但是需要找到真正错误原因。这可能是运行很久的应用程序,对大表访问慢或者不稳定的网络。


补充:

 今天在优化业务SQL时,在执行我很多union all组成的一个语句时,报出“Lost connect tomysql server during query”。

这个查询是在我们自己的一个mysql数据库中间件上执行的(这个中间件就是实现了分布式的功能,下面挂了多个mysql,类似阿里的cobar和开源的mycat),

后来定位出问题是因为我们中间件的一个bug,导致这个查询执行时中间件就挂掉了,然后客户端收到了“Lost connect tomysql server during query”,把那个sql改小一点尽然可以了。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值