我们在导入sql文件时,由于数据过大,而发生错误。笔者这几天遇到了想MySQL数据库中许多错误,这就是其中一个。
发生这个错误说明你即将导入的数据包过大,默认允许4M。
两个办法:
一、命令行修改:
这里笔者已经修改了,再修改一次也无妨。
注意看!!!
max_allowed_packet这里是以字节为单位的,也可以直接写500M。笔者用的是5.7版本,其他版本了解不是很多。但是如果你的my.ini配置文件在bin目录下,这样的修改是暂时的,如果重启服务就会重新变成4M。按道理来说,重启服务是应该使用配置文件的值,而不是你修改的,亲测这样去set,只是“短暂”的效果,重启服务后,还是使用的是默认值。添加默认值参照第二种办法,第一种方法只适用临时或者一次接收很大文件的情况。但是也请读者看完下面的文章。
在网上就有很多说在bin目录下添加my.ini文件的,不错,这样是可以添加。但是你不会使用到配置文件中的值,因为它是无效的。正确的做法是在最开始初始化MySQL的时候,在你安装目录下添加my.ini配置文件,修改这个文件才是有效的。
笔者在安装的时候看到有贴子说bin目录下添加my.ini文件,即使我删除之后再外面添加,也是无效的,可能是在初始化的时候设置了一些东西,我的做法是重新安装,之后文章会讲解如何完全删除MySQL数据库及重装。目前就重装吧。接下来看第二种办法。
第二个办法是在my.ini配置文件中配置max_allowed_packet参数,修改之后重启服务,就可以永久修改。再次提示,如果在my.ini在bin目录下,即使你修改了配置文件,它是没有生效的,亲测。
[mysqld]
port = 3306
basedir=G:\mysql-5.7.27-winx64
# MySQL程序安装目录
datadir=G:\mysql-5.7.27-winx64\data
# 数据库文件存放地址
max_connections=20
# 最大连接数
character-set-server=utf8
default-storage-engine=INNODB
# 数据库默认使用引擎
max_allowed_packet = 500M
[mysql]
default-character-set=utf8
# mysql客户端默认的字符集,5.7才有的,5.6以及之前的版本没有default-character-set属性
以上就是我的my.ini配置文件有兴趣的可以参考一下,顺便说一下max_allowed_packet参数可以大可以小,只要能读取sql文件不报错就行。