问题: Packet for query is too large (1786 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.

错误描述:

今天在手机端查看之前上线的项目时,突然报了下面的错误。再之后用电脑登陆,其他设备登陆都一直报这个错误。

错误信息:

### Error querying database. Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1036 > 1024). You can change this value on the server by setting the max_allowed_packet' variable. 
### The error may involve defaultParameterMap 
### The error occurred while setting parameters 
### Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1036 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.
; SQL []; Packet for query is too large (1036 > 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 (1036 > 1024). You can change this value on the server by setting the max_allowed_packet' variable. 

主要错误信息:Packet for query is too large (1036 > 1024)

出错的原因就是表面的意思:请求包的大小是1036,而mysql设置的允许的最大包的大小是1024,因此出错。

解决思路:

在抛出的异常信息中已经给出了解决方案:You can change this value on the server by setting the max_allowed_packet' variable.

也就是设置下“max_allowed_packet”的值就好了[什么是max_allowed_packet:MySQL根据配置文件会限制Server接受的数据包大小。有时候大的插入和更新会受 max_allowed_packet 参数限制,导致大数据写入或者更新失败。

]

具体操作:

(1)可以先看下“max_allowed_packet”的值

show  VARIABLES like '%max_allowed_packet%';

 

可以看出我当前的值是1024(修改之前的默认值)

(2)下面就是修改

遇到这个问题后,看了不少博客,说的都是下面的两种解决方案:

1)命令行临时修改(不需要重启mysql)

SET GLOBAL  max_allowed_packet=1073741824 

2)修改配置文件,可以长久生效的(修改完需要重启mysql)

 找到配置文件的目录

mysql –help | grep my.cnf

修改配置文件 (my.cnf)

max_allowed_packet = 20M 

我尝试了第一种方法,可以执行成功,但是,修改完依然报错,再通过sql查看时发现值没变。

(值没变的原因:

SET GLOBAL max_allowed_packet=1073741824 

注意里面的"GLOBAL",设置的范围是GLOBAL ,但是查看的时候是show VARIABLES like '%max_allowed_ 并没有GLOBAL ,

通过

show  GLOBAL  VARIABLES like '%sql_mode%'; 

发现

值确实被修改了

详细内容见大佬简书:https://www.jianshu.com/p/629685b97030

最终解决方案:

修改配置文件,并重启mysql

注意:该值设置过小将导致单个记录超过限制后写入数据库失败,且后续记录写入也将失败。

猜你喜欢

转载自www.cnblogs.com/excellencesy/p/10411330.html
今日推荐