Mysql报Packet for query is too large (1040 > 1024)错误

Linux下mysql 报Packet for query is too large (1040 > 1024)错误的解决方法

项目之前一直正常运行,这几天突然一直提示查询出错,看了下日志发现提示Packet for query is too large (1040 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.错误。百度了解决方法,记录下解决过程。

1.原因

查询数据库返回的数据包太大,超过了默认值。

登录mysql,在控制台输入一下命令查询默认的max_allowed_packet值,发现只有1024

 

[sql] view plain copy
 
  1. show VARIABLES like '%max_allowed_packet%';  

 

2.修改默认最大允许包大小

2.1方式一:命令方式

(1).在mysql控制台下输入以下命令,设置max_allowed_packet为20M

 

[sql] view plain copy
 
  1. set global max_allowed_packet = 20*1024*1024;  

 

(2).退出mysql,重启mysql服务,再登录myql中查询max_allowed_packet是否修改成功

 

[sql] view plain copy
 
  1. show VARIABLES like '%max_allowed_packet%';  

 

2.2方式二:修改配置文件my.cnf方式

(1).mysql控制台下输入以下命令,编辑my.cnf
[plain] view plain copy
 
  1. sudo vi  /etc/mysql/my.cnf  
(2).在[mysqId]下面添加
[plain] view plain copy
 
  1. max_allowed_packet = 20M  
2.2退出编辑模式,重启mysql,步骤如2.1的(2)所示

3.注

配置完查询max_allowed_packet发现是16777216,实际上是16*1024*1024,并不是期望的20M,于是又查了下,可能是服务器内存容量不够,因为java就占了很多,所以mysql可能会自动重设参数。所以某些情况下可能是你当时更改完max_allowed_packet参数,过一段时间mysql自动重设参数变为默认的1024,又出现了同样的错误。
 
 
 
 
注意事项:
1、 max_allowed_packet的值最大为1G,设置的值必须为1024的倍数
2、设置完后,需要退出mysql,重新进入才能看到设置后的值 

posted on   范兵  阅读(236)  评论(0编辑  收藏  举报

编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示