【发布时间】:2018-08-21 08:24:10
【问题描述】:
很多人问这个问题,但以前的答案都没有解决我的问题。
我正在运行一个 CakePHP 网络应用程序,并且每隔一段时间我就会连续出现 2 个错误:
MySQL server has gone away in [/var/www/html/vendor/cakephp/cakephp/src/Database/Driver/PDODriverTrait.php, line 159]
紧随其后
SQLSTATE[08S01]: Communication link failure: 1153 Got a packet bigger than 'max_allowed_packet' bytes
当尝试将新记录插入数据库时会发生这种情况。
在出现错误后,数据库连接似乎仍在工作,因为 PHP 仍然可以从中读取,但任何新的 INSERT 进入数据库都会导致另一个 Got a packet bigger than 'max_allowed_packet' bytes 错误。此时唯一的解决方案是重新启动 mySQL,否则该错误将永远出现在每隔一个 INSERT 上。
我已经按照建议在 my.cnf 中设置了 max_allowed_packet = 512M,但这并没有解决问题。
我拒绝相信有人正在发送大于 512MB 的数据包!我错过了什么吗?是否有一些缓存或队列经常被填满,重新启动会清除并使一切再次正常工作?
【问题讨论】:
-
你的数据有多大?
-
@Altmish-E-Azam 它很小。今天早上当用户尝试注册时出现错误(字面意思是一个包含 5 个字段的发布请求)。
-
你重启 MySQL 了吗?从 mysql 终端检查最大数据包大小
show variables like 'max_allowed_packet'。 -
@Altmish-E-Azam 是
max_allowed_packet | 536870912