当前位置:  开发笔记 > 编程语言 > 正文

在PHP站点突然"MySQL服务器已经消失"错误

如何解决《在PHP站点突然"MySQL服务器已经消失"错误》经验,为你挑选了1个好方法。

今天我的一个网站开始展示

Error Number: 2006
MySQL server has gone away

它是在Apache 2.2.9(Debian),PHP 5.2.6-1 + lenny3(使用CodeIgniter 1.7.1框架)和MySQL 5.0.51a下运行的低流量客户端站点.我显然对这个错误进行了重新研究,但是所有可能的解决方案都意味着有大量的查询可能会超时并重置连接或达到数据包限制.但是,情况并非如此,它是使用最简单的查询处理的小型数据库.为了确保这一点,我编写了几个查询来返回一行,仍然是同样的错误.

数据库凭证很好,我甚至可以直接登录到mysql,运行一些网站的查询并立即获得正确的数据.在同一台服务器上有几个其他站点和数据库的连接,更大的站点,它们都没有问题.

我试过了:

重启MySQL

重新启动整个服务器

寻找日志中的错误(Apache和MySQL都没有)

检查数据库用户权限

改变mysql.connect_timeoutdefault_socket_timeoutPHP

改变max_allowed_packetMySQL

阅读官方文档,论坛和SO中的所有内容,"MySQL服务器已经消失"

新:

在PHP中禁用持久连接

改变wait_timeoutconnect_timeout在MySQL中

更新:

它似乎与我的脚本的执行时间有关:它使用Facebook PHP客户端检索一些信息,这个调用似乎今天随机失败,所以我要么没有来自Facebook的数据或MySQL错误.但令我惊讶的是,没有一个给定的解决方案似乎处理超时.

有任何想法吗?感谢您的时间!



1> lima..:

正如我在更新中所说,我得出的结论是,当Facebook的链接花费的时间长于数据库的最大连接时间时,会出现MySQL的问题.没有任何建议可以超越这个限制,所以我决定解决它并重新连接每次我假设链接可能已经消失.

所以在每次打电话给Facebook之后,我都习惯了以下代码:

$this->load->database();
$this->db->reconnect();

这是使用CodeIgniter时的特殊解决方案,而AFAIK db-> reconnect()函数仅在1.7.2版本之后可用,因此我更新了它以便工作.

谢谢大家的回答!

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有