MySQL Error 2006 MySQL server has gone away原因分析
作者: 曲文庆 日期: 2014-10-29 16:55
PHP执行后台脚本程序,程序执行过程中偶尔会有MySQL的错误:SQLSTATE[HY000]: General error: 2006 MySQL server has gone away,这个错误官方的解释是客户端无法向服务器发送请求,可能是连接超时了。产生这个问题的原因有很多,具体可以看看MySQL官网的解释。
1:服务器关闭连接后,试图向服务器发送查询,这表明必须修改应用逻辑错误;
2:客户端应用运行不同主机,连接至MySQL的主机没有必要的权限;
3:客户端TCP/IP连接超时,这可能是使用了MySQL选项引起的,这种情况增加超时时间可以帮助解决问题;
4:服务器端连接超时和客户端自动重连被关闭;
5:这种情况的解决方案就是用mysql_ping()连接确认自上次以为是否有长时间查询(MyODBC原理),或者设置wait_timeout参数为很高的值,使连接不可能超时;
6:向服务器发送不正确或者太大的查询也会导致这种错误。如果mysqld收到的包太大或者无序,它就认为客户端发生错误而断开连接,如果需要大查询,可以修改max_allowed_packet变量,该变量默认值是1M,在客户端也需要设置最大包的大小;
7:INSERT or REPLACE语句插入大量的行也会引起这种错误,这些语句不考虑插入的行数而发送单一的请求至服务器,因此减少插入的行数可以避免经常发生这种错误;
8:如果解析主机名失败也可能看到这种错误,这是因为MySQL依赖于主机系统解析主机名,但无法知道它是否有效,以MySQL观点来看,在任何网络超时中这种情况都是不易察觉的;
9:如果应用产生子进程,所有子进程都试图使用同样的连接至MySQL服务器,也同样会出现这种错误,可以把不同的子进程用不同的连接来避免这种问题;
10:可以检查mysql服务是否已经死掉,执行重启和检查服务器启动时间。如果客户端连接中断是因为mysqld崩溃和重启,可以集中查找Ping Mysql服务,如果没有连接则重新连接崩溃的原因;
http://dev.mysql.com/doc/refman/5.1/en/gone-away.html
评论: 0 |
引用: 0 |
阅读: 4828
MySQL 5.6 Warning - Using a password on the command line interface can be insecur 解决方案 (2015-04-23 11:52)
Converting HEAP to MyISAM (2014-10-30 19:06)
Install Atlas in CentOS 6 (2014-03-12 12:01)
mysqldump 出現general_log 錯誤 (2011-01-07 20:24)
mysql导出符合条件的数据(含字符集) (2010-11-03 10:04)
深入了解MySQL 5.5分区功能增强 (2010-05-19 10:18)
MySQL /bin/rm: cannot remove `libtoolT': No such file or directory (2010-05-19 09:57)
MySQL配置文件my.cnf (2009-12-29 22:29)
MySQL创始人力劝用户暂缓部署MySQL 5.1 (2008-12-03 09:10)