问题

在 mysql 需要导入大量数据的时候,会报 “MySQL server has gone away.” 的错误。

解决

方式一:

① 首先查看 mysql 最大允许接收的包的大小:

mysql> show global variables like ‘max_allowed_packet’;

MySQL server has gone away._my.cnf


最大值是 4194304 ,这里的单位是字节,所以现在 mysql 最大允许接受 4M的包。

② 将 ‘max_allowed_packet’ 的值调大:
mysql> set global max_allowed_packet=576716800;
这里将最大值设为 550M,因为导出来的 db 备份包就有 500多兆。

方式二:

上面的方式只对当前有效,重启 mysql 服务后就会恢复原值。如果想要永久生效,可以在 my.cnf 中添加:

max_allowed_packet=550M

MySQL server has gone away._max_allowed_packet_02

注:

① 在 Linux 服务器下,mysql 的配置文件是 my.cnf,而 Windows 服务器下,mysql 的配置文件是 my.ini。

② 配置文件的位置可以通过 whereis 命令找到:
whereis my.cnf 或 whereis my.ini