Windows10下Navicat导入数据导mysql8.0失败处理
1.通过navicat导入一张大小约70M的表,执行过程会报错,报错信息如下:
[SQL] Query point start
[ERR] 1153 - Got a packet bigger than 'max_allowed_packet' bytes
2.发现报错的参数是max_allowed_packet,一查相关资料,原来是导入的数据文件比默认设置的参数的允许包文件大小要大,导致导入失败。
3.修改的参数的方法有两个:
a.修改配置文件
首先找出my.ini或者my.cnf,由于我本地的mysql是通过安装包安装的,不过不好找,先找到安装路径;登录mysql查询一下SQL:
select @@basedir;
出来的路径是:C:\Program Files\MySQL\MySQL Server 8.0\
在该路径下找了大半天却没找到对应的配置文件
最后无意中居然在隐藏的文件夹中找到,放在该路径下C:\ProgramData\MySQL\MySQL Server 8.0(后来发现原来my.ini配置文件没有设置basedir,设置datadir为datadir=C:/ProgramData/MySQL/MySQL Server 8.0\Data ,结果导致配置文件放在数据目录下)
增加需要修改的参数,并保存文件
max_allowed_packet=200M
重启数据库即可生效
b.直接修改参数max_allowed_packet,调大到需要的大小值(这种修改方法会在重启数据库后失效)
参数原本的值是67108864
修改参数大小
查询发现没有修改,还是原来的值
再查下全局,原来改在全局了
show global VARIABLES like'max_allowed_packet';
关掉原来查询的界面,重新执行导入SQL文件,成功导入
最后,在处理好问题,再查下这个参数的作用;
max_allowed_packet参数指的是MySQL服务端或者客户端接收一次传送数据包的最大大小,MySQL服务端和客户端上都有这个限制。值设置过小将导致单个记录超过限制后写入数据库失败,且后续记录写入也将失败,为了数据完整性,需要考虑到事务因素。
由于这个大小限制,就造成导入数据失败。