[已解决]com.mysql.cj.jdbc.exceptions. PacketTooBigException: Packet for query is too large (3,456,888

2024-05-26 10:46:03 浏览数 (2)

问题

com.mysql.cj.jdbc.exceptions. PacketTooBigException: Packet for query is too large (3,456,888 > 1,048,576). You can change this value on the server by setting the’ max_allowed_packet ’

思路

项目场景: 同步大数据出现批量更新或批量插入失败

问题描述: Caused by: com.mysql.cj.jdbc.exceptions. PacketTooBigException: Packet for query is too large (3,456,888 > 1,048,576). You can change this value on the server by setting the’ max_allowed_packet ’

原因分析: MySQL事务单次处理的数据包大小是有限的,不能超过设定的数据包的最大值,超过了MySQL驱动会掉丢数据,导致SQL操作失败。

解决方案: 1、调大参数max_allowed_packet 命令行方式(重启服务失效)

代码语言:javascript复制
 进入本地命令cmd
 net start mysql
 mysql -u root -p
 输入密码回车登入MySQL服务器
 show variables like 'max_allowed_packet'; //查看max_allowed_packet大小
 set global max_allowed_packet=10*1024*1024; //设置允许的最大数据包大小,单位为B
 exit;  //退出MySQL服务器

配置文件方式(不会失效,推荐)

代码语言:javascript复制
[mysqld]
#设置3306端口号
port=3306
#设置MySQL的安装目录
basedir=D:\mysql-8.0.21-winx64
#设置MySQL数据库的数据存放目录
datadir=D:\mysql-8.0.21-winx64\data
#允许的最大的数据包大小
max_allowed_packet=10*1024*1024
#运行最大连接数
max_connections=200
#运行连接失败的次数。这也是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
#服务端使用的字符集默认为utf-8
character-set-server=utf8
[mysql]
#客户端使用的字符集默认为utf8
default-character-set=utf8
[client]
#客户端默认端口号为3306
port=3306
#日志
log=mylog.log 

解决

成功加载sql文件

0 人点赞