欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > 数据库 >内容正文

数据库

mysql 修改max_allowed_packet_Mysql修改max_allowed_packet参数

发布时间:2023/12/16 数据库 49 豆豆
生活随笔 收集整理的这篇文章主要介绍了 mysql 修改max_allowed_packet_Mysql修改max_allowed_packet参数 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

问题

在 Java 程序中如果出现如下错误:

Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (2084 > 1024). You can change this value on the server by setting the max_allowed_packet’ variable.

原因是 mysql 会限制 server 接受的数据包大小。有时候大的插入和更新超过了 max_allowed_packet 参数限制,会导致写入或者更新失败。于是会出现上面的异常。

解决

首先,查看当前的接收数据包限制,在 mysql 命令行下:

show variables like '%max_allowed_packet%';

显示结果为:1048576(单位为 B),即 1M

那么,怎么修改该参数呢?有以下几种方式

1、命令行修改(该方式重启 Mysql 服务会失效)

在 Mysql 命令行执行:

set global max_allowed_packet = 6*1024*1024

然后退出命令行,再重新进入命令行查看,发现已经变为 6M 了。

但是此方式重启 mysql 服务就会失效。所以我们来看下一种方式。

2、Mysql 配置文件修改

可以编辑 my.cnf(windows 下 my.ini,linux 下一般是/etc/my.cnf)来修改 ,在[mysqld]段或者 mysql 的 server 配置段增加下面配置:

[mysqld]

max_allowed_packet=6M

提示:Linux 下如果找不到 my.cnf,可以通过如下命令查找:

mysql --help | grep my.cn

重启 mysql 服务使之生效。

这里我再扩展下,在用 docker 或者 docker-compose 部署 Mysql 的情况下,修改该参数。

3、Docker 部署下的修改

如果使用 Dockerfile 构建 Mysql 镜像,可以将修改过的配置文件(如:my-lwq.cnf,内容如下)挂载到容器内。

[mysqld]

max_allowed_packet=6M

!includedir /etc/mysql/conf.d/

通过在 Dockerfile 文件加入下面命令挂载 my-lwq.cnf 文件到容器内,然后重新构建镜像即可。

COPY ./my-lwq.cnf /etc/mysql/conf.d/

4、docker-compose 部署下的修改

如果是通过 docker-compose 部署的 mysql,修改 max_allowed_packet 参数,一种方式是可以按照 3、Docker 部署下的修改 中的方式,通过 Dockerfile 挂载配置文件到容器,则除上面操作外,在 docker-compose.yaml 下还需指定自定义镜像构建,该部分配置参考如下:

mysql:

image: mysql_v1

build:

context: .

dockerfile: Dockerfile.mysql

另一种方式则是直接在 docker-compose.yaml 指定挂载配置文件,该部分配置参考如下:

mysql:

volumes:

- ./my-lwq.cnf:/etc/mysql/conf.d/my-lwq.cnf

最后运行 docker-compose 即可。

总结

以上是生活随笔为你收集整理的mysql 修改max_allowed_packet_Mysql修改max_allowed_packet参数的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。