之前搭建的网站老是会出现由于数据库断开的500错误
,网站的错误日志如下:
mysqli::real_connect(): send of 61 bytes failed with errno=32 Broken pipe...
但是只要页面刷新几次后,再访问就可以了,所以就一直拖着,今天特意花时间来处理这个问题。
首先,查看mysql是否启用日志
mysql> SHOW GLOBAL VARIABLES LIKE '%log%';
+--------------------------------------------+----------------------------------------------+
| Variable_name | Value |
+--------------------------------------------+----------------------------------------------+
...
| log_error | /var/log/mysqld.log |
...
看到我们要找的错误日志所在位置,打开 /var/log/mysqld.log
文件
看到有报很多 这样的错误 Got an error reading communication packets
,网上查了下资料,定位到问题,应该是 mysql 中的 max_allowed_packet
设置太小
切到mysql 查看下,果然,max_allowed_packet 为 Empty set (0.34 sec)
mysql> show variables like '%max_allowed_packet%';
Empty set (0.17 sec)
再切到 etc/my.cnf
,里面并没有关于 max_allowed_packet
的设置
max_allowed_packet
的修改方法有两种
修改方法1(配置文件持久化修改):
vim /etc/my.cnf
[mysqld]
max_allowed_packet = 100M
修改方法2(命令行临时修改):
mysql> set global max_allowed_packet = 100 * 1024 * 1024;
mysql> exit
max_allowed_packet 最大值是1G(1073741824),如果设置超过1G,查看最终生效结果也只有1G。
我自然选择配置文件持久化修改了
参考:
写入MySQL报错超出 max_allowed_packet 的问题
mysql max_allowed_packet查询和修改
网友评论