【异常】 Packet for query is too large (1220 > 1024). You can change this value on the server by setting


问题:
【异常】Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1220 > 1024). You can change this value on the server by setting the max_allowed_packet' variable

原因:
有时候大的插入和更新会受max_allowed_packet 参数限制,导致写入或者更新失败。
mysql max_allowed_packet 设置过小导致记录写入失败
mysql根据配置文件会限制server接受的数据包大小。

解决方法一:mysql控制台命令方式

    1.通过mysql客户端,查看目前配置:show VARIABLES like '%max_allowed_packet%'; 默认为1M。
    
    2.改为更大的值:set global max_allowed_packet = 2*1024*1024*10;  (修改后,重启数据库会生效!)
    
解决方法二:修改配置文件my.cnf方式

    1.在MySQL安装目录下的my.ini文件中的[mysqld]段中的找到"max_allowed_packet = 1M"。
    
    2.修改为自己想要的值(如果没有这行内容,自己添加上去,即:max_allowed_packet=20M)保存,重起MySQL服务。
    注意:该值设置过小将导致单个记录超过限制后写入数据库失败,且后续记录写入也将失败。

    注: max_allowed_packet = 20M
    通过方法二修改完成后,通过客户端生效。 但发现,过一段时间(有时几个小时,有时1~2天),自动变为1024。
    继续查资料,是服务器内存不足的问题,导致MySQL自动重新设置参数。
    
    建议:不要把一台服务器的内存都用光了,要预留多点内存,另外mysql和Java程序最好分开部署。

  

猜你喜欢

转载自blog.csdn.net/Mindest/article/details/84583084
今日推荐