当我试图获取一个大的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

当前回答

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

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

其他回答

我在第97行解决了错误error 2006 (HY000): MySQL服务器已经离开,并成功迁移了一个>5GB sql文件,按顺序执行以下两个步骤:

创建了其他人推荐的/etc/my.cnf,内容如下: (mysql) Connect_timeout = 43200 max_allowed_packet = 2048M net_buffer_length = 512M debug-info = TRUE 附加标志——force——wait——重新连接到命令(即mysql -u root -p -h localhost my_db < file. exe)。SQL——verbose——force——wait——reconnect)。

重要提示:执行这两个步骤都是必要的,因为如果我不费心对/etc/my.cnf文件进行更改,也不附加这些标志,导入后会丢失一些表。

系统使用:OSX El Capitan 10.11.5;mysql version 14.14 distribub 5.5.51 for osx10.8

当我使用Mysql集群时,我遇到了这个错误,我不知道这个问题是否来自集群的使用。由于误差是完全相同的,所以在这里给出我的解。 得到这个错误是因为数据节点突然崩溃。但是当节点崩溃时,你仍然可以使用cmd得到正确的结果:

ndb_mgm -e 'ALL REPORT MEMORYUSAGE'

mysqld也可以正常工作。所以一开始,我不明白是怎么回事。大约5分钟后,ndb_mgm结果显示没有数据节点工作。然后我意识到问题所在。因此,尝试重新启动所有的数据节点,然后mysql服务器恢复正常,一切正常。

但有一件事对我来说很奇怪,在我失去mysql服务器的一些查询后,当我使用cmd像show tables,我仍然可以得到像set中的33行(5.57秒)这样的返回信息,但没有表信息显示。

max_allowed_packet=64M

在my.cnf文件中添加这一行可以解决我的问题。

当列有大值时,这很有用,这会导致问题,你可以在这里找到解释。

在Windows上,这个文件位于:C:\ProgramData\MySQL\MySQL Server 5.6” Linux操作系统(Ubuntu):“/etc/mysql”

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

由于某些原因,全局更新和my.cnf设置对我不起作用。将max_allowed_packet值直接传递给客户端工作在这里:

mysql -h <hostname> -u username -p --max_allowed_packet=1073741824 <databasename> < db.sql