3

我已经从一台服务器上备份了一个数据库,并试图在另一台服务器上恢复它。

mysql版本是5.5

当我尝试使用以下命令恢复数据库时, screen -r

mysql -u root -p password mydb < mydump.sql
ERROR 1005 (HY000) at line 356: Can't create table 'mydb.mytable' (errno: 150)

我知道这是外键约束问题。转储文件里面有以下语句。

/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;

但它仍然失败。我的 dumo 文件非常大,因此无法打开和编辑。所以我可以直接在mysql命令行中设置它而不是添加SET FOREIGN_KEY_CHECKS=0;转储,如下所示?

mysql> SET FOREIGN_KEY_CHECKS=0;
...
mysql> source "mydump.sql";
...
mysql> SET FOREIGN_KEY_CHECKS=1;

它会起作用吗?我的数据库重新加载需要几个小时才能完成。所以我在花费数小时之前在这里寻求帮助。

谢谢您的帮助。

4

1 回答 1

1

通常,我只会输入 2 个 sql 文件——首先,一个带有 . 的单行SET FOREIGN_KEY_CHECKS=0;文件,然后是转储文件。您不必担心将其放回原处;它只会持续到当前会话(加载文件后将终止)。

sed -i 1i"SET FOREIGN_KEY_CHECKS=0;" dump.sql仅供参考,如果您想永久添加此行而不用视觉编辑文件,您也可以使用。

于 2013-02-23T02:58:29.340 回答