错误描述:

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

错误信息:

### 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

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

3)我选择了比较稳妥的方法,修改配置文件,他然后重启mysal、

原以为这样就不会有问题了,但是!!!在大约一个月后又报了这个错,max_allowed_packet的值又变成了1024,重新打开配置文件,发现里面的值还是20M啊,但是通过命令查询的时候却发现查出来的值是1024,然后我就把mysql重启了一下,在去查询的时候发现配置文件里的配置生效了。由于当时比较忙,也没去查生效值变为1024的原因。之后这个错误又出现了三次,每次都是重启服务器解决。直到有一天数据库中了勒索病毒。库被删了,让用比特币换。才意识到问题的严重性。

具体的才可以查看下面这篇博客:

Mysql max_allowed_packet自动重置为1024(黑客入侵?)

最新文章

  1. Beta阶段项目终审报告
  2. php文件写入PHP_EOL与FILE_APPEND
  3. iOS开发之百度地图导航
  4. eclipse查看hadoop中文件出现乱码
  5. js 实现精确加减乘除
  6. 使用selenium来完成的例子
  7. WebViewJavascriptBridge 原理分析
  8. 对struts2的基本知识和环境的搭建(配图解)
  9. [Swift]LeetCode516. 最长回文子序列 | Longest Palindromic Subsequence
  10. 转 spring注解式参数校验
  11. 31.QPainter-rotate()函数分析-文字旋转不倾斜,图片旋转实现等待
  12. 处理centos6或者7依赖关系(Nginx、MySQL、PHP)的方法
  13. JavaSE回顾及巩固的自学之路(四)——————方法和数组,面向对象
  14. vuex的理解
  15. 《HTTP - 理解 Content-Type》
  16. linux-安装jdk以及tomcat
  17. Go RPC返回值
  18. 【黑客免杀攻防】读书笔记10 - switch-case分支
  19. python获取软件安装列表2222
  20. loadrunner怎么打印接口返回的参数

热门文章

  1. beego 相关
  2. win10远程桌面配置
  3. python基础===monkeytype可以自动添加注释的模块!
  4. free函数在操作系统内存中的实现【转】
  5. An unhandled exception of type 'System.TypeInitializationException' occurred in System.ServiceModel.dll
  6. nodejs面试题
  7. node.js3
  8. System.getProperty方法中输出路径的方法
  9. mysql性能分析-------profiling和explain
  10. find命令的基本用法