1. 原因
某个字段存储的内容过大
2. 解决
修改max_allowed_packet参数
max_allowed_packet参数是指mysql服务器端在一次传送数据包的过程当中最大允许的数据包大小。如果超过了设置的最大长度,则会数据库保持数据失败。
2.1 查询参数
show variables like '%max_allowed_packet%';
或者
select @@max_allowed_packet;
2.2 修改参数
1)临时修改(重启MySQL 失效)
设置100M:
set global max_allowed_packet = 100 * 1024 * 1024;
2)永久修改(改配置文件)
Linux:
vim /etc/my.cnf
[mysqld]
max_allowed_packet = 100M
Windows:修改 my.ini 文件
注意:
● 通过命令行方式修改时,不能用M、G,只能这算成字节数设置。使用配置文件修改才允许设置M、G单位。
● 命令行修改之后,需要退出当前回话(关闭当前mysql server链接),然后重新登录才能查看修改后的值。通过命令行修改只能临时生效,如果下次数据库重启后对应的配置就会又复原了,因为重启的时候加载的是配置文件里面的配置项。
● max_allowed_packet 最大值是1G(1073741824),如果设置超过1G,查看最终生效结果也只有1G