php - 2006 : MySQL server has gone away

标签 php mysql timeout mysql-error-2006

我经常收到“与 MySQL 服务器的连接丢失”和“2006:MySQL 服务器已消失”错误,导致服务器无法使用。 SO中有与此问题相关的问题,但没有一个适用于我的情况;例如,没有网络连接(服务器通过套接字连接到同一台计算机上的客户端进程)并且没有长查询(该计算机正在运行多个 CMS - mediawiki、drupal 和 joomla - 并且PHPMyAdmin,但是生成的查询没有什么异常,据我所知)。

我已将所有超时时间增加到一定足够的程度:

+-----------------------------+----------+
| Variable_name               | Value    |
+-----------------------------+----------+
| connect_timeout             | 60       |
| delayed_insert_timeout      | 300      |
| innodb_flush_log_at_timeout | 1        |
| innodb_lock_wait_timeout    | 50       |
| innodb_rollback_on_timeout  | OFF      |
| interactive_timeout         | 28800    |
| lock_wait_timeout           | 31536000 |
| net_read_timeout            | 6000     |
| net_write_timeout           | 6000     |
| rpl_stop_slave_timeout      | 31536000 |
| slave_net_timeout           | 3600     |
| wait_timeout                | 28800    |
| max_allowed_packet          | 16777216 |
+-----------------------------+----------+

我还将 php.ini 中的 connect_timeout 设置更改为无限制:

; Maximum time (in seconds) for connect timeout. -1 means no limit
; http://php.net/mysql.connect-timeout
mysql.connect_timeout = -1

重新启动服务器可以解决几个小时内的问题。此后,每次通过 CMS(即通过 PHP)以及通过带有简单查询的小型 PHP 测试程序的访问都会失败。但是,我仍然可以通过 MySQL 客户端访问 MySQL 服务器和数据库。

MySQL 错误日志中没有错误消息。

服务器在最新的 Mac Mini 上运行,使用 Mac OS X 10.9.5、MySQL v5.6.22 和 PHP v5.6.3(通过 Mac 端口安装)。

你能帮我想出一些办法来解决这个问题吗?

最佳答案

此错误通常在服务器超时时发生,并且可能是连接关闭,因此可能是 http://dev.mysql.com/doc/refman/5.0/en/gone-away.html会帮助你的。

关于php - 2006 : MySQL server has gone away,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27607094/

相关文章:

php - Grocery Crud - 无法区分返回查询表中的属性

mysql - 子查询作为mysql中的生成列?

asp.net - ASP.NET 中的 session 超时

SQL Server 简单插入语句超时

php - 如何避免在每个查询中都使用 $conn?

ruby-on-rails - 如何增加 Heroku 30s h12 超时

PHP - 比较两个 MySQL 表

php - 如何将 php 关联数组排序为特定顺序?

javascript - 用PHP打开一个新函数

php - 单个 SQL 查询中的百分比