mysql 信息包过大问题「max_allowed_packet 设置」

原因

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 值。

  1. [mysqld]
  2. max_allowed_packet = 1000M

注:重启数据库后生效。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注