今天我的一个网站开始展示
错误编号:2006 MySQL服务器不见了
这是一个低流量的客户端站点,在Apache 2.2.9(Debian),PHP 5.2.6-1 + lenny3(使用CodeIgniter 1.7.1框架)和MySQL 5.0.51a下运行。我显然是对该错误进行了重新研究,但所有可能的解决方案都表明正在进行的大查询可能会超时并重置连接,或达到数据包限制。但是,事实并非如此,这是一个使用最简单查询处理的小型数据库。为了确保这一点,我编写了一些查询以返回一行,但仍然是相同的错误。
数据库凭据很好,我什至可以直接登录mysql,运行站点的一些查询并立即获取正确的数据。同一台服务器上还有其他几个站点,并且与数据库的连接更大,这些站点都没有问题。
我试过了:
mysql.connect_timeout
default_socket_timeout
max_allowed_packet
新:
wait_timeout
connect_timeout
更新:
它似乎与脚本的执行时间有关:它使用Facebook PHP客户端检索一些信息,并且此调用今天似乎随机失败,因此我没有Facebook的数据或MySQL错误。但是令我惊讶的是,给定的解决方案似乎都没有解决超时问题。
有任何想法吗?感谢您的时间!
正如我在更新中所说的那样,我得出的结论是,与Facebook的链接花费的时间超过与数据库的最大连接时间时,MySQL就会出现问题。没有任何建议可以克服此限制,因此我决定解决此问题,并在每次我认为链接可能消失时重新连接。
因此,在每次调用Facebook之后,我都会使用以下代码:
$ this-> load-> database(); $ this-> db-> reconnect();
这是使用CodeIgniter和AFAIK时的特殊解决方案,仅从1.7.2版开始,db-> reconnect()函数才可用,因此我对其进行了更新以使其正常工作。
谢谢大家的回答!