解决com.mysql.cj.jdbc.exceptions.PacketTooBigException: Packet for query is too large (3009 大于 1024)

1.今天遇到一个蛮奇怪的问题  ,项目一天都没啥问题  ,然后等我下班测试就跟我说报错   报错如下:

解决com.mysql.cj.jdbc.exceptions.PacketTooBigException: Packet for query is too large (3009 大于 1024)

 

2.然后我立马去控制台打印实时日志查看报如下错 ;

解决com.mysql.cj.jdbc.exceptions.PacketTooBigException: Packet for query is too large (3009 大于 1024)

 

3.经过排查才知道在做查询数据库操作时,有可能才会报了以上错误,还有out of memery heap hacp ,原因是mysql的max_allowed_packet设置过小引起的,mysql根据配置文件会限制server接受的数据包大小。有时候大的插入和更新会被max_allowed_packet 参数限制掉,导致失败。  首先进入mysql:mysql -uroot -p  如下图:

解决com.mysql.cj.jdbc.exceptions.PacketTooBigException: Packet for query is too large (3009 大于 1024)

 

4.查看当前配置信息:show VARIABLES like '%max_allowed_packet%';

解决com.mysql.cj.jdbc.exceptions.PacketTooBigException: Packet for query is too large (3009 大于 1024)

5.上图所示 max_allowed_packet是我修复BUG更改之后的value值      输入show VARIABLES like '%max_allowed_packet%';查询出来是1024   所以3009大小超过了1024    然后我们输入:set global max_allowed_packet = 2*1024*1024*10;  从而设置max_allowed_packet的大小   输入quit退出mysql   最后重启mysql服务器就好了    重启命令:service mysqld restart