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

本文解析了MySQL中max_allowed_packet参数过小导致的PacketTooBigException异常原因,并提供了两种解决方法:一是通过mysql控制台命令方式临时调整,二是修改my.cnf配置文件永久解决。同时,文章还提醒注意服务器内存分配,避免因内存不足导致参数自动回滚。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


问题:
【异常】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程序最好分开部署。

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值