【问题标题】:Execution Creates "MySQL server has gone away" Error执行创建“MySQL 服务器已消失”错误
【发布时间】:2010-08-27 07:03:31
【问题描述】:

我正在使用一个 PHP 脚本,该脚本旨在长时间连续执行(一次性映射脚本)并将数据插入 MySQL 数据库。该脚本运行良好,但最终(一两分钟后)出现错误:

MySQL server has gone away

我已经更改了 mysql 连接超时和 php 脚本执行超时的 ini 设置,但都没有改变结果。

我过去制作了一个非常相似的脚本,它在同一台服务器上运行了很长时间而没有遇到过这个错误。

感谢您抽出宝贵时间,希望您的帮助可以让我与其他遇到此帖子的沮丧脚本编写者一起解决此问题。

【问题讨论】:

  • 执行的查询是什么?

标签: php mysql timeout


【解决方案1】:

发生这种情况的原因有很多:超时、大数据包等。

请查看this

【讨论】:

    【解决方案2】:

    配置更改后您是否重新启动了 mysqld? 内存够不够,不被OOM杀手杀死?

    更新:这里是解决方案,你需要设置“等待超时” http://dev.mysql.com/doc/refman/5.0/en/gone-away.html

    【讨论】:

      【解决方案3】:

      查看 mysql 服务器设置上的 max_allowed_pa​​cket。客户端无法发送大于此大小的数据包,否则 mysql 服务器将关闭连接。

      这仅与查询字符串变得很长时的数据插入有关。这不会影响 SELECT,因为服务器会自动放大发送数据包。

      合适的大小是数据大小乘以 2。需要进行乘法运算,因为在发送之前经常会转义数据,并且在 SQL 查询中添加页眉和可能的页脚。

      max_allowed_pa​​cket 的用途是控制服务器内存使用并限制 DoS 攻击。

      【讨论】:

        猜你喜欢
        • 2018-08-27
        • 1970-01-01
        • 2012-06-28
        • 2011-12-18
        • 2011-10-12
        • 2013-04-26
        • 1970-01-01
        相关资源
        最近更新 更多