问题描述
在迁移数据库、备份还原或数据导入时报错:
[ERR] 1153 - Got a packet bigger than ‘max_allowed_packet’ bytes
问题原因
这个错误表示MySQL服务器接收到的数据包超过了配置的max_allowed_packet的大小限制。max_allowed_packet是MySQL的一个系统变量,用于定义MySQL服务端能接收的最大数据包的长度(以字节为单位)。当一个数据包的大小超过这个值时,MySQL会拒绝接收更多数据,并抛出错误。
查询MySQL配置的max_allowed_packet大小:
# 查询结果的单位是字节
show global variables like 'max_allowed_packet';
解决方案
方案类型 | 优点 | 缺点 |
---|---|---|
临时方案 | 不需要重启数据库 | 临时修改,下次重启数据库时本次修改失效 |
永久方案 | 永久修改 | 需要重启数据库 |
临时方案
# 假设临时调整max_allowed_packet的值为512MB
set global max_allowed_packet=1024*1024*512;
永久方案
编辑MySQL的配置文件(通常是my.cnf或my.ini),在[mysqld]部分下添加或修改max_allowed_packet的值,然后重启MySQL服务器。
[mysqld]
max_allowed_packet=512M
这个设置将永久生效,直到你再次修改配置文件。
MySQL配置文件目录
Windows
如果根据上面的教程发现修改配置文件不生效,可以看一下下面这篇文章,大家根据自己的情况选择。
Windows MySQL 修改配置文件 my.ini 不生效
Linux
/etc/my.cfg 或者 /etc/mysql/my.cnf