当我试图获取一个大的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
我在第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
当您创建的SCHEMA的COLLATION与转储中使用的不同时,也会出现此错误消息。因此,如果转储包含
CREATE TABLE `mytab` (
..
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
你也应该在SCHEMA排序中反映这一点:
CREATE SCHEMA myschema COLLATE utf8_unicode_ci;
我一直在模式中使用utf8mb4_general_ci,因为我的脚本来自一个新的V8安装,现在在旧5.7上加载一个DB崩溃了,几乎把我逼疯了。
所以,也许这能帮你节省一些令人沮丧的时间……: -)
(MacOS 10.3, mysql 5.7)