导入SQL文件到MySQL报错 - 2006 - MySQL server has gone away

时间:2021-11-16 03:48:57

从dev环境导出了一个大小为57M的sql文件,使用Navicat导入到一半的时候,报出下面的错误:

[Err] 2006 - MySQL server has gone away
[Err] ...
[Msg] Finished - Unsuccessfully
--------------------------------------------------

然后接着查看了MySQL的console信息:

2020-01-08T01:29:12.787613Z 9 [Note] Aborted connection 9 to db: 'testdbdev' user: 'hecg' host: 'localhost' (Got a packet bigger than 'max_allowed_packet' bytes)

意思是我们导入时候发给MySQL Server的数据包的大小超过了默认的大小,如果要解决这个问题,手动在 my.ini 文件中设置 max_allowed_packet 的大小即可:

[mysqld]
......
# 解决 [Err] 2006 - MySQL server has gone away
max_allowed_packet=128M

解决问题后,接着去MySQL官方参考手册找到了这部分内容 - 数据包太大

  • mysql客户端程序,则其默认 max_allowed_packet变量为16MB,如需要设置更大的值,可以在启动的时候指定参数:

    • mysql --max_allowed_packet=32M
  • mysql服务器的默认 max_allowed_packet值为64MB,如需要设置更大的值,同样也可以指定参数:

    • mysqld --max_allowed_packet=128M
  • 对于服务器端,也可以在配置文件指定,即最上面的方法:在 my.ini 中设置 max_allowed_packet

    [mysqld]
    max_allowed_packet=128M