MySQL 下 max_allowed_packet 参数配置
MySQL根据配置文件限制Server接受的数据包大小,有时候插入和更新会受到 max_allowed_packet
参数限制,就会发生操作数据库失败的情况,查询也一样,如果超过了限制也会报错,比如查询结果是个非常大的数据包,就会出现以下异常:
org.b3log.latke.repository.RepositoryException:
com.mysql.cj.jdbc.exceptions.PacketTooBigException:
Packet for query is too large (3,333 > 1,024).
You can change this value on the server by setting the 'max_allowed_packet' variable.
会告诉你查询数据包过大,因为MySQL默认查询数据包大小为 1024 也就是1KB
可通过以下命令查询当前设置大小:
SHOW VARIABLES LIKE '%max_allowed_packet%';
查询结果如下:
由于我的 MySQL 已经改过了此配置,所以不是 1024 了
修改配置文件
可以通过编辑 my.cnf 来修改,(Windows下是 my.ini),在 [mysqld] 配置段或者 mysql 的 server 配置段进行修改
打开此配置文件
vim /etc/mysql/my.cnf
按下 I 光标移动到指定位置,在这里加入一行
然后按下 ESC 输入 :wq
回车
然后重启 MySQL 服务即可,再次输入 SHOW VARIABLES LIKE '%max_allowed_packet%';
查看是否设置成功。
如果你是在 Docker 容器内安装的 MySQL 镜像
先进入容器
docker exec -it [容器名] /bin/bash
Docker 容器内是没有 vim的,连 vi 都没有,所以需要先在容器内安装 vim
apt-get update
apt-get install vim
再开始执行上面的步骤即可,完成后将容器重启。
关注微信公众号"程序员小辉"