Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (101089 > 1024)问题的解决

今天做数据上传时,报了一个异常,具体异常描述如下:

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

之前没遇到过,有点茫然。上网查询后才知道,MYSQL会根据配置文件会限制server接受的数据包大小。有时候在大的插入和更新会被max_allowed_packet 参数限制掉,导致失败。
其实错误信息已经告诉我们,是数据包过小限制数据上传,而且告诉了我们解决的办法:You can change this value on the server by setting the max_allowed_packet’ variable.。所以我们从这入手。
1.登录mysql;
2.查看max_allowed_packet的配置大小,操作指令如下:SHOW VARIABLES LIKE ‘%max_allowed_packet%’;
默认情况下,最大允许数据包的容量是1M ,需要修改更大一点:20M。
3.在MYSQL里输入set global max_allowed_packet = 2*1024*1024*10; (即将数据包容量设置为20M)
4.退出MSQL,再次连入后查看,输入show variables like ‘%max_allowed_packet%’;
可以看到,此时数据包容量已经成功设置为20M。
重新上传后,还是失败,此时我怀疑修改的配置信息还不生效,应该将mysql服务器重启,让修改过后的配置信息生效,
果然,重启上传就成功了。
从中可以看出:
1.遇到BUG,要善于查看日志,从日志中找到根源;
2.mysql配置信息发生改变,应重启mysql服务器才能彻底立马生效。

也可编辑/etc/my.cnf文件,找到max_allowed_packet=1M,然后将1M替换为更大的值保存退出后,重启mysql即可。

猜你喜欢

转载自blog.csdn.net/shenxiaomo1688/article/details/81205421