纵有疾风起
人生不言弃

mysql连接超时怎么办

在Mysql的默认设置中,如果一个数据库连接超过8小时没有使用(闲置8小时,即  
28800s),mysql 
server将主动断开这条连接,后续在该连接上进行的查询操作都将失败,将  
出现:error 2006 
(MySQL server has gone away)!。  
查看mysql server超时时间:


   msyql> show global variables like ‘%timeout%’;
 
设置mysql server超时时间(以秒为单位): 
 
  msyql> set global wait_timeout=10;


  msyql> set global interactive_timeout=10;
经 过这样处理后,可以非常有效的解决MySQL server has gone away这样的问题,而且不会对系统造成额外的开销。 今天遇到类似的情景,MySQL只是冷冷的说:MySQL server has gone away。 大概浏览了一下,主要可能是因为以下几种原因: 一种可能是发送的SQL语句太长,以致超过了max_allowed_packet的大小,如果是这种原因,你只要修改my.cnf,加大max_allowed_packet的值即可。 还有一种可能是因为某些原因导致超时,比如说程序中获取数据库连接时采用了Singleton的做法,虽然多次连接数据库,但其实使用的都是同一个连接,而且程序中某两次操作数据库的间隔时间超过了wait_timeout(SHOW STATUS能看到此设置),那么就可能出现问题。最简单的处理方式就是把wait_timeout改大,当然你也可以在程序里时不时顺手mysql_ping()一下,这样MySQL就知道它不是一个人在战斗。 解决MySQL server has gone away 1、应用程序(比如PHP)长时间的执行批量的MYSQL语句。最常见的就是采集或者新旧数据转化。

未经允许不得转载:起风网 » mysql连接超时怎么办
分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录