我在运行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)
答案 0 :(得分:1)
它经常发生在大循环中的几个插入,并且其中一个INSERT失败。通常情况下,MySQL服务器会在一段时间后恢复,而不必执行任何操作。
但请务必在my.ini中将max_packet_size调整为一大笔量并重新启动服务器:
[mysqld]
max_allowed_packet = 16M
通过以下方式验证:
SHOW VARIABLES LIKE '%packet%';
答案 1 :(得分:1)
如果您使用的列文本可能需要序列化数据和许多行,您必须考虑增加这些参数:
max_allowed_packet=512M
如果您有很多请求设置此项,请不要将其设置为更大,因为它与您的环境相关
max_connections=1000
注意如果您处于最后一种情况并且如果您正在使用持久连接,请查看是否禁用它,在许多与数据库具有密切交互的应用程序中,如果您创建了许多连接持久性,则使用该数字这么快。