版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/HcJsJqJSSM/article/details/83929014
一:问题背景介绍.
1. MySQL插入1000W条数据的时候因数据量大于单表默认数据量而报错.(MySQL 5.7)
com.mysql.jdbc.PacketTooBigException: Packet for query is too large (4232009 > 4194304). You can change this value on the server by setting the max_allowed_packet’ variable.
描述:说明单表的默认存储空间存不下了,导致数据写入单表失败了,需要修改默认的存储空间大小为更大的.
2. MySQL的单表默认存储大小.
MYSQL默认的存储空间大小是:4194304/1024/1024=4M.
(方式一:基于MySQL命令行的修改方式)
3. Navicat下查看单表的默认大小.
show VARIABLES like 'max_allowed_packet';
4. 修改默认的单表存储大小.(这里以修改为10M为例进行测试).
set global max_allowed_packet=10*1024*1024;
现在查询一下大小.(发现没有生效).
关闭这个窗口重新登录一下Navicat的命令行界面.(关键)10485760/1024/1024=10M
但是现在查看MySQL的配置文件发现max_allowed_packet还是默认的4M,因为是临时生效,并未修改配置文件.
(方式二:基于配置文件的修改方式)
还可以通过配置文件的方式来修改:MySQL服务的路径下修改
如果修改会提示拒绝访问的.(出于MySQL服务器安全性考虑).
赋予修改权限即可.
点击应用->确定.