MySQL Packet for query is too large解决方法

MySQL Packet for query is too large解决方法

    • 背景:昨天上线的分配订单业务在读取订单到缓存中时,由于是批量从DB查询读取缓存,一次查询读取数据量较大( Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (4935 > 2048). You can change this value on the server by setting the max_allowed_packet' variable. ; Packet for query is too large (4935 > 2048). You can change this value on the),但是测试环境(阿里云)就没有,生产环境(华为云)出现了上面问题,可能是当时安装mysql配置不同的原因
    • 检查过程
      • show VARIABLES like '%max_allowed_packet%';
    • 解决办法
      • 第一种:连接mysql set global max_allowed_packet = 20*1024*1024;
      • 第二种 修改配置文件my.cnf方式

背景:昨天上线的分配订单业务在读取订单到缓存中时,由于是批量从DB查询读取缓存,一次查询读取数据量较大( Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (4935 > 2048). You can change this value on the server by setting the max_allowed_packet’ variable. ; Packet for query is too large (4935 > 2048). You can change this value on the),但是测试环境(阿里云)就没有,生产环境(华为云)出现了上面问题,可能是当时安装mysql配置不同的原因

检查过程

show VARIABLES like ‘%max_allowed_packet%’;

MySQL Packet for query is too large解决方法_第1张图片
MySQL Packet for query is too large解决方法_第2张图片

解决办法

第一种:连接mysql set global max_allowed_packet = 2010241024;

执行 set global max_allowed_packet = 20*1024*1024;

在这里插入图片描述

再次执行 show VARIABLES like '%max_allowed_packet%';  并未生效

MySQL Packet for query is too large解决方法_第3张图片
重启 mysql 就可以了
MySQL Packet for query is too large解决方法_第4张图片

第二种 修改配置文件my.cnf方式

vi  /etc/mysql/my.cnf 

在[mysqId]下面添加

max_allowed_packet = 20M 

退出编辑模式,重启mysql

你可能感兴趣的:(linux,数据库)