Linux 技术手札

MySQL / MariaDB 修改资料插入上限 max_allowed_packet

在 MySQL / MariaDB 插入资料时,每笔资料也会有限制,默认值是 16MB,其实这个 16MB 的限制已经很宽松,一般情况都会够用,但如果将档案 (例如图片) 直接储存在 MySQL 的话,便有可能出现错误,当用 inert 插入 或 update 更新的资料超过限制的话,会出现以下错误:

Error 1153 – Got a packet bigger than ‘max_allowed_packet’ bytes

要解决这个问题可以修改 MySQL 的 max_allowed_packet 变量。

在修改前可以先查看目前的 max_allowed_packet 变量的数值,在 CLI 登入 MySQL:

# mysql -u mysql -p

登入 MySQL 后输入以下指令查看:

上面的数值是 16MB,例如想加大到 32MB, 可以用以下两种方法设定:

1. 实时改变 max_allowed_packet 变量

这个方法的好处是立即生效,而且不用重新启动 MySQL,但缺点是下次重新启动 MySQL 后设定会失效。登入 MySQL 后,输入以下指令:

2. 修改 my.cnf

修改 my.cnf 可以在重新启动 MySQL 也保持设定生效,开启 my.cnf:

# vi /etc/my.cnf

在 [mysqld] 段落加入 max_allowed_packet 的设定,例如:

最后重新启动 MySQL:

# systemctl restart mysql
Exit mobile version