您当前的位置: 首页 > 数据库教程 > MySQL教程 > mysql报MySQL server has gone away错误的解决办法

mysql报MySQL server has gone away错误的解决办法

作者:不详 来源:网络 发布时间: 2011-10-03 17:09 点击:
mysql报MySQL server has gone away错误的解决办法: 我们在实际的开发中经常会遇到MySQL server has gone away的问题,导致这个问题可能是因为以下几种原因: 一种可能是执行的SQL语句太长,以致超过了max_allowed_packet的大小,如果是这种原因,你只要修改my.cnf,加

mysql报MySQL server has gone away错误的解决办法

  mysql报MySQL server has gone away错误的解决办法:
  
  我们在实际的开发中经常会遇到MySQL server has gone away的问题,导致这个问题可能是因为以下几种原因:
  
  一种可能是执行的SQL语句太长,以致超过了max_allowed_packet的大小,如果是这种原因,你只要修改my.cnf,加大max_allowed_packet的值即可。
  
  还有一种可能是因为某些原因导致超时,比如说程序中获取数据库连接时采用了Singleton的做法,虽然多次连接数据库,但其实使用的都是同一个连接,而且程序中某两次操作数据库的间隔时间超过了wait_timeout(SHOWSTATUS能看到此设置),那么就可能出现问题。最简单的处理方式就是把wait_timeout改大,当然你也可以在程序里时不时顺手mysql_ping()一下,看看是否mysql还存才可用的链接.
  
  以下是两种解决办法:
  
  1、执行一个SQL,但SQL语句过大或者语句中含有BLOB或者longblob字段。比如,图片数据的处理
  
  解决方法:
  
  在my.cnf文件中添加或者修改以下变量:
  
  max_allowed_packet=10M
  
  (也可以设置自己需要的大小)
  
  max_allowed_packet
  
  参数的作用是,用来控制其通信缓冲区的最大长度。
  
  2、应用程序(比如PHP)长时间的执行批量的MYSQL语句。最常见的就是采集或者新旧数据转化。
  
  解决方法:
  
  在my.cnf文件中添加或者修改以下两个变量:
  
  wait_timeout=2880000
  
  interactive_timeout=2880000
  
  关于两个变量的具体说明可以google或者看官方手册。如果不能修改my.cnf,则可以在连接数据库的时候设置CLIENT_INTERACTIVE,比如:
  
  sql="set interactive_timeout=24*3600";
  
  mysql_real_query(...)

分享到:
本文"mysql报MySQL server has gone away错误的解决办法"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(1)
100%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4