原因
max_allowed_packet 针对的是一个事务中的一行记录大小,当一行记录超过了限制的大小,将会报错。sql文件中每次insert完进同一张表的所有数据被称为一个数据包(packet),max_allowed_packet就是来限制这个的大小的阈值,大于这个值,mysql的I/O连接会关闭,就会报错。
解决方案
一、临时解决方案(无需重启数据库)
① 查询当前 max_allowed_packet 设置的最大值。
show VARIABLES like ‘%max_allowed_packet%’
② 修改 max_allowed_packet 最大值为 1000M。
set global max_allowed_packet = 1000 * 1024 * 1024;
注:关闭连接工具重新查看生效,max_allowed_packet 最大值是1G(1073741824),如果设置超过1G,查看最终生效结果也只有1G。重启Mysql会恢复到默认值,。
二、永久性解决方案
编辑mysql配置文件设置 max_allowed_packet 值。
- [mysqld]
- max_allowed_packet = 1000M
注:重启数据库后生效。