3

我正在尝试将数据库从 serverA 移动到 serverB。我使用以下命令创建了一个 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 行收到错误“ERROR 2006 (HY000): MySQL server has gone away”。我在 stackoverflow 上阅读了有关相同错误消息的其他帖子,并尝试了以下方法:

  1. 修改 my.cnf 以包括:

    [mysqldump]
    快速
    max_allowed_pa​​cket = 64M

然后我重新启动了mysql。顺便说一下,文件大小实际上只有5.2mb

  1. 尝试使用 phpmyadmin 创建转储文件。
  2. 我认为这不是超时问题,因为它在导入过程中 2 秒后死亡。
  3. 我打开了 mysql 转储文件并检查了它正在轰炸的行号,它是从第 43 行开始的大量插入语句的一部分。我不确定它是否相关,但第 406 行以不完整的开头细绳:

    第 402 行----> (341,1996,12,'

    第 403 行---->front'),(341,1996,12,'interior'),(341,1996,12,'rear'),(341,1996,13,'front'),(341, 1996,13,'内部'),(341,1996,13,'后部'),(341,1996,14,'前部')

但是话虽如此,所有前面插入的记录看起来都是一样的......所以我认为这也不是问题所在。

任何建议,将不胜感激。

4

1 回答 1

4

max_allowed_packet需要在客户端(mysql)和服务器(mysqld)上都设置才能生效。由于处理转储时会出现问题,因此为 mysqldump 设置它不会有任何效果。

于 2013-01-31T15:45:54.003 回答