我正在尝试将数据库从服务器 A 移动到服务器 B。我使用以下命令创建了一个 mysql 转储:
mysqldump -u root -p -c --add-drop-table --add-locks --quick --lock-tables mydatabase > /var/log/mydatabaseJan31.sql
然后在 serverB 上,我尝试通过执行以下操作来导入此数据:
mysql -u root -p mydatabase < /tmp/mydatabaseJan31.sql
我几乎立即收到错误“第 408 行的错误 2006 (HY000):MySQL 服务器已消失”。 我已经阅读了关于相同错误消息的 stackoverflow 上的其他帖子,并且尝试了以下操作:
修改 my.cnf 以包括:
[mysqldump]
快
max_allowed_packet = 64M
然后我重新启动了mysql。顺便说一句,文件大小实际上只有5.2mb
我打开了 mysql 转储文件并检查了它轰炸的行号,它是从第 43 行开始的大量插入语句的一部分。 我不确定它是否相关,但第 406 行以不完整的字符串开头:
402行----> (341,1996,12,'
line 403---->front'),(341,1996,12,'interior'),(341,1996,12,'rear'),(341,1996,13,'front'), (341,1996,13,'内饰'),(341,1996,13,'后'),(341,1996,14,'前')
但话虽如此,之前插入的所有记录看起来都是一样的……所以我认为这也不是问题所在。
如有任何建议,我们将不胜感激。
最佳答案
max_allowed_packet 需要在客户端 (mysql) 和服务器 (mysqld) 上设置才能生效。由于您的问题发生在处理转储时,因此将其设置为 mysqldump 将无效。
关于MySQL 错误 2006 (HY000) 在第 406 行 : MySQL server has gone away - even after increasing dump file size setting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14629364/