当前位置: 首页 > 面试题库 >

PHP站点中突然出现“ MySQL服务器已消失”错误

谷梁俊楚
2023-03-14
问题内容

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

错误编号:2006
MySQL服务器不见了

这是一个低流量的客户端站点,在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_timeout在PHP
  • max_allowed_packet在MySQL中更改
  • 阅读官方文档,论坛以及SO中所有显示“ MySQL服务器已消失”的内容

新:

  • 在PHP中禁用持久连接
  • 更改wait_timeoutconnect_timeout在MySQL

更新:

它似乎与脚本的执行时间有关:它使用Facebook
PHP客户端检索一些信息,并且此调用今天似乎随机失败,因此我没有Facebook的数据或MySQL错误。但是令我惊讶的是,给定的解决方案似乎都没有解决超时问题。

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


问题答案:

正如我在更新中所说的那样,我得出的结论是,与Facebook的链接花费的时间超过与数据库的最大连接时间时,MySQL就会出现问题。没有任何建议可以克服此限制,因此我决定解决此问题,并在每次我认为链接可能消失时重新连接。

因此,在每次调用Facebook之后,我都会使用以下代码:

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

这是使用CodeIgniter和AFAIK时的特殊解决方案,仅从1.7.2版开始,db->
reconnect()函数才可用,因此我对其进行了更新以使其正常工作。

谢谢大家的回答!



 类似资料:
  • 问题内容: 我在办公室运行服务器以处理一些文件,并将结果报告给远程MySQL服务器。 文件处理需要一些时间,并且过程中途结束,并出现以下错误: 我已经听说过MySQL设置 wait_timeout ,但是是否需要在办公室或远程MySQL服务器上更改它? 问题答案: 检查连接是否容易并在需要时重新建立连接可能会更容易。 有关此信息,请参见PHP:mysqli_ping。

  • 问题内容: 我已经在PHP中编写了一些代码,这些代码从.edu域返回html内容。这里简要介绍:PHP中有关Web爬网程序的错误 当要爬网的链接数量很少(大约40个URL)时,该爬网程序运行良好,但是在此数量之后我收到“ MySQL服务器已消失”错误。 我将HTML内容作为长文本存储在MySQL表中,但我不明白为什么在插入至少40-50次后错误会到达。 在这方面的任何帮助都将受到高度赞赏。 请注意

  • 问题内容: 当我尝试来源大型SQL文件(大型查询)时出现此错误。 表中的任何内容均未更新。我尝试删除和取消删除表/数据库,以及重新启动MySQL。这些都不是解决问题的方法。 这是我的最大数据包大小: 这是文件大小: 当我尝试其他方法时… 问题答案: 将此行添加到文件中解决了我的问题。 当列的值较大会导致问题时,此功能很有用,您可以在此处找到说明。 在Windows上,此文件位于:“ C:\ Pro

  • 我经常遇到这个错误,以至于php_error日志文件每2秒增加1MB。并且站点非常慢。 我试着把这条线添加到wp-db.php 但这并没有帮助。 Web服务器是IIS 7,最新版本的mysql和wordpress

  • 问题内容: 我有一个脚本,每晚都会做很多事情。 它使用在循环中执行的PDO准备好的语句。 前几个运行良好,但是后来我发现它们都因以下错误而失败:“ MySQL服务器已消失”。 我们运行MySQL 5.0.77。 PHP版本5.2.12 该网站的其余部分运行正常。 问题答案: 该B.5.2.9。MySQL手册中的MySQL服务器已消失,列出了导致此错误的可能原因。 也许您处于其中一种情况?-特别是考

  • 问题内容: 我最近发现,早先运行良好的SQL查询现在在60秒后超时并引发错误。该查询速度很慢,但是作为日常工作的一部分运行,因此它本身不是问题(因此请不要建议我对其进行优化)。 通过运行“ select SLEEP(120);”,我能够一致地重现该错误。从PHP如下所示。但是,从MySQL客户端运行相同的语句成功(返回0)。我试过调整wait_timeout(设置为28800),但是没有运气。我还