【问题标题】:yii mysql server has gone away on insert queryyii mysql 服务器在插入查询中消失了
【发布时间】:2015-02-09 06:30:54
【问题描述】:

我在运行 5 分钟后尝试执行一项 cron 作业,但出现以下错误。

我在这里附上屏幕截图。我正在使用 yii 框架。

  CDbCommand failed to execute the SQL statement: SQLSTATE[HY000]: 
  General error: 2006 MySQL server has gone away. 
  The SQL statement executed was: INSERT INTO `phpcrawler_links` 
  (`site_id`, `depth`, `crawl_now`, `url`, `last_crawled`, 
  `http_status_code`, `content_type`, `page_size`, `parent_url_id`) 
  VALUES (:yp0, :yp1, :yp2, :yp3, :yp4, :yp5, :yp6, :yp7, :yp8)

【问题讨论】:

标签: php mysql sql yii


【解决方案1】:

这通常是由于在一个大循环中多次插入而发生的,其中一个 INSERT 失败。通常,MySQL 服务器会在一段时间后恢复,而无需执行任何操作。

但请务必在 my.ini 中将您的 max_packet_size 调整为较大的数量并重新启动您的服务器:

[mysqld]
max_allowed_packet = 16M

验证人:

SHOW VARIABLES LIKE '%packet%';

【讨论】:

  • 非常感谢您的回复。
  • 如何更改托管站点?使用 php.ini 或其他方式
  • 首先,确认您的循环没有大到影响性能。如果你真的需要,你可以要求他们增加。
  • 我标记的不是问题,而是一些插入查询。这给出了这个错误
  • 我触发了上面的查询,它给了我下面的详细信息 max_allowed_pa​​cket 67108864 slave_max_allowed_pa​​cket 1073741824
【解决方案2】:

如果您使用可能带有序列化数据和许多行的列文本,您必须考虑增加这些参数:

max_allowed_packet=512M

如果您有很多请求,请设置此选项,不要将其设置为更大,因为它与您的环境相关

max_connections=1000

注意如果您是最后一种情况,并且如果您使用持久连接,请查看禁用它,在许多与数据库有密切交互的应用程序中,如果您创建许多持久连接,您会消耗该数字这么快。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-19
    • 2010-09-14
    • 2012-08-13
    • 1970-01-01
    • 1970-01-01
    • 2015-03-29
    • 2013-09-29
    • 2015-02-20
    相关资源
    最近更新 更多