Description
When a MySQL client or the mysqld server receives a packet bigger than max_allowed_packet
bytes, it issues an ER_NET_PACKET_TOO_LARGE error and closes the connection. With some clients, you may also get a Lost connection to MySQL server during query error if the communication packet is too large.
官网解释,也即该参数表示,如果对应的mysql 接收的包大小超过了 max_allowed_packet
会提示异常信息,此时,有几种解决方式,例如,缩小自己传输的包(当然有时候就是因为业务需要,必须要传输的 packet 要大的多,那么就没办法缩小,而且还必须扩大)
Root Cause
pass
Solutions
提供两种解决方式:
-
temporary changed(临时修复方式,也即不需要重启mysql)
该方式如果重启了 mysql 服务,则在重启之后,
max_allowed_packet
会回复默认值 4m,对应字节数 = 4194304 bytes- 登陆 mysql ,启动个 query 窗口,先检查当前的
max_allowed_packet
zhi
SHOW VARIABLES LIKE "max_allowed_packet";
查看结果为
max_allowed_packet
4194304- 执行如下命令进行更新
max_allowed_packet
SET GLOBAL max_allowed_packet=268435456; -- 对应 256mb
注意当前的
max_allowed_packet
存储的是字节数
数值(从上面的介绍当中就可以知道max_allowed_packet
单位就是 字节)- 再次检查,执行
SHOW VARIABLES LIKE "max_allowed_packet";
查看当前的值,但是发现并未进行修改
注意,该参数的修改并不是
常规及时修改生效的参数
,需要用户断开当前的库连接之后,再重新登陆查看,即可看到生效后的数 - 登陆 mysql ,启动个 query 窗口,先检查当前的
-
permanent changed (永久性修改)
该方法需要重启mysql 服务,需要注意对应的数据的
备份
,(养成备份的习惯,应对disaster)- 修改 mysql 的配置文件
linux 系统默认是 /etc/my.cnf, 或者 my.ini( windows 系统)
# vim /etc/my.cnf # 添加配置参数 [mysqld] max_allowed_packet=256M
- 保存退出,并重启 mysql
- 使用
SHOW VARIABLES LIKE "max_allowed_packet";
查看当前值即可
Others
官方提供的解决方案:B.3.2.8 Packet Too Large