php - "MySQL server has gone away"后跟 "Got a packet bigger than ' max_allowed_pa​​cket ' bytes"

标签 php mysql unix cakephp

很多人问这个问题,但之前的答案都没有解决我的问题。

我正在运行 CakePHP Web 应用程序,时常会连续出现 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_pa​​cket = 512M,但这并没有解决问题。

我拒绝相信有人发送大于 512MB 的数据包!我错过了什么吗?是否有一些缓存或队列经常被填满,重新启动会清除并使一切再次正常工作?

最佳答案

事实证明这是 CakePHP < 3.6.10 的一个错误

已修复:https://github.com/cakephp/cakephp/pull/11668

关于php - "MySQL server has gone away"后跟 "Got a packet bigger than ' max_allowed_pa​​cket ' bytes",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51944550/

相关文章:

PHP 数组 : integer index vs string index

php - 使用 Doctrine 构建通用的 OO ACL

mysql - 如何登录 MySQL 并从命令行执行选择

C - 管道程序输出

c - EAGAIN 是什么意思?

php - 如何处理循环外键插入?

php - 在 PHP 中什么时候使用 ===, !== 而不是 ==, !=

php - 如何将 LAST_INSERT_ID() 存储在数据库中作为另一个表中的外键

php - 无法保存 MySQL 查询

mysql - 选择顶部错误