max_allowed_packet是Mysql中的一个设定参数,用于设定所接受的包的大小,根据情形不同,其缺省值可能是1M或者4M,比如是4M的情况下,这个值的大小即为:4 *1024*1024= 4194304
现象
当日志中出现了诸如:“Package for query is too large (xxxxxxxx > 4194304). You can change this value on the server by setting the max_allowed_package variable”的提示的时候,错误的本身就清楚的提示了对应的方式。
确认max_allowed_package
使用如下的方式可以确认当前设定值
select @@max_allowed_packet;
或
show variables like 'max_allowed_packet';

修改
可以使用set命令来修改,但是只是临时修改,重启后即丢失。
set global max_allowed_packet=268435456;
也可以直接修改过 mysql的设定文件并重启mysql服务,即可永久化保证设定。
根据mysql的安装不同修改的文件也会有所不同,普通安装方式可能会修改my.cnf,这里使用mysql的官方镜像,其修改的文件应该为:/etc/mysql/mysql.conf.d/mysqld.cnf
修改内容:向此文件中添加如下设定
max_allowed_packet = 256M
修改前
|
1 2 3 4 5 6 7 8 9 |
|
修改后
|
1 2 3 4 5 6 7 8 9 10 |
|
重启容器并确认

所以已经看到已经成功设定为256M(268435456)了

当Mysql遇到'Package for query is too large'的错误时,可以通过调整max_allowed_packet参数来解决。该参数限制了单次查询的数据包大小。默认可能为1M或4M,可通过`select @@max_allowed_packet;`或`show variables like 'max_allowed_packet';`查询当前值。临时修改可使用`set global max_allowed_packet=268435456;`,但重启后失效。要永久修改,需编辑mysql配置文件如my.cnf,在[mysqld]段添加`max_allowed_packet=256M`,然后重启MySQL服务。
1808

被折叠的 条评论
为什么被折叠?



