还有一种多是由于某些缘由致使超时,好比说程序中获取数据库链接时采用了Singleton的作法,虽然屡次链接数据库,但其实使用的都是同一个链接,并且程序中某两次操做数据库的间隔时间超过了wait_timeout(SHOW STATUS能看到此设置),那么就可能出现问题。最简单的处理方式就是把wait_timeout改大,固然你也能够在程序里时不时顺手mysql_ping()一下,这样MySQL就知道它不是一我的在战斗。mysql
解决MySQL server has gone away
一、应用程序(好比PHP)长时间的执行批量的MYSQL语句。最多见的就是采集或者新旧数据转化。
解决方案:
在my.cnf文件中添加或者修改如下两个变量:
wait_timeout=2880000
interactive_timeout = 2880000
关于两个变量的具体说明能够google或者看官方手册。若是不能修改my.cnf,则能够在链接数据库的时候设置CLIENT_INTERACTIVE,好比:
sql = "set interactive_timeout=24*3600";
mysql_real_query(...)
二、执行一个SQL,但SQL语句过大或者语句中含有BLOB或者longblob字段。好比,图片数据的处理
解决方案:
在my.cnf文件中添加或者修改如下变量:
max_allowed_packet = 10M(也能够设置本身须要的大小)
max_allowed_packet 参数的做用是,用来控制其通讯缓冲区的最大长度。 sql