MySQL异常:com.mysql.jdbc.PacketTooBigException: Packet for query is too large

问题

之前运行的项目忽然间今天不好使了,报错如下:

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

; Packet for query is too large (1070 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.; nested exception is com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1070 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.

解决

这个问题的原因是什么呢?

他是因为Mysql的max_allowed_packet设置过小引起来的问题,我一开始设置的大小为1M,上面的错误提示也很明确了,查出的是1070,而我们设置的是1024,小于的结果值,所有会报错。

Mysql会根据配置文件对server接收的数据包大小进行限制,有的时候插入和更新会被max_allowed_packet参数给进行限制,才会导致失败。

那么解决的思路也很清晰,就是将我们的限制该大些即可。所以我们调整为20M

首先我们在客户端,查看一下是否和我们所说的是否一致。

通过下面这条命令查看,我们的配置 show VARIABLES like '%max_allowed_packet%';

这样,我们修改配置,将max_allowed_packet的值修改的大点、修改完成后重新启动mysql服务即可

set global max_allowed_packet = 210241024*10;

如果是在linux下,其实也可以对配置文件进行修改,对mysql的my.conf文件中天一行内容,如下: max_allowed_packet = 20M;

这样就不用执行上面的set global max_allowed_packet = 210241024*10命令了。

重启命令如下:

service mysql restart

这样我们的调整即完成了。

题外知识点

max_allowed_packet是什么?

他指的是mysql服务器端和客户端之间一次传送数据包的过程中允许的最大数据包大小。

好了,今天关于MySQL异常:com.mysql.jdbc.PacketTooBigException: Packet for query is too large就讲解到这里,欢迎大家留言交流。

也欢迎大家关注我的公众号《coder练习生》

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ybb_ymm

你的鼓励会是对我最大的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值