当我试图获取一个大的SQL文件(一个大的INSERT查询)时,我得到这个错误。

mysql>  source file.sql
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    2
Current database: *** NONE ***

ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    3
Current database: *** NONE ***

表中没有任何内容被更新。我尝试了删除和恢复表/数据库,以及重新启动MySQL。这些都不能解决问题。

这是我的最大数据包大小:

+--------------------+---------+
| Variable_name      | Value   |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+

下面是文件大小:

$ ls -s file.sql 
79512 file.sql

当我尝试另一种方法时……

$ ./mysql -u root -p my_db < file.sql
Enter password: 
ERROR 2006 (HY000) at line 1: MySQL server has gone away

当前回答

消除触发警告的错误是我的最终解决方案。我还改变了max_allowed_packet,这有助于较小的文件与错误。消除这些错误也会极大地加快这个过程。

其他回答

如何使用mysql客户端像这样:

mysql -h <hostname> -u username -p <databasename> < file.sql

这里可能会发生一些事情;

插入运行时间过长,客户端正在断开连接。当它重新连接时,它没有选择数据库,因此出现了错误。这里的一个选项是从命令行运行批处理文件,并在参数中选择数据库,如下所示;

$ mysql db_name < source.sql

另一种方法是通过php或其他语言运行命令。在每个长时间运行的语句之后,您可以关闭并重新打开连接,以确保在每个查询开始时都已连接。

我尝试了以上所有的解决方案,都失败了。

我最终使用-h 127.0.0.1,而不是使用默认的var/run/mysqld/mysqld.sock。

我在XAMMP中遇到了同样的问题

Metode-01:我修改了D:\xampp\mysql\bin\my.ini文件中的max_allowed_packet,如下所示:

max_allowed_packet = 500

最后重新启动MySQL服务一次就完成了。

Metode-02:

如果您正在使用XAMPP,这是更简单的方法。打开XAMPP控制面板,单击mysql部分中的config按钮。

现在点击my.ini,它将在编辑器中打开。将max_allowed_packet更新为所需的大小。

然后重新启动mysql服务。在Mysql服务上单击stop,再次单击start。等几分钟。

然后再次运行Mysql查询。希望它能起作用。

如果你在Mac上,像我一样通过brew安装mysql,下面的方法是有效的。

Cp $(brew——prefix mysql)/support-files/my-default.cnf /usr/local/etc/my.cnf

出处:对于自制mysql安装,my.cnf在哪里?

在/usr/local/etc/my.cnf文件中增加max_allowed_packet=1073741824 mysql。服务器重启