我从一台服务器上备份了一个数据库,并试图在另一台服务器上恢复它。
Mysql版本是5.5
当我尝试使用以下命令恢复数据库时,屏幕-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文件非常大,所以打开它并编辑是不可能的。因此,不是在转储中添加SET FOREIGN_KEY_CHECKS=0;
,而是可以直接在mysql命令行中设置它,如下所示?
mysql> SET FOREIGN_KEY_CHECKS=0;
...
mysql> source "mydump.sql";
...
mysql> SET FOREIGN_KEY_CHECKS=1;
会起作用吗?我的数据库重新加载需要数小时才能完成所以我在这里花了好几个小时才在这里寻求帮助。
感谢您的帮助。
答案 0 :(得分:1)
通常,我只需输入2个sql文件 - 首先是一个带有SET FOREIGN_KEY_CHECKS=0;
的单行文件,然后转储文件。您无需担心将其重新设置;它将仅持续当前会话(将在加载文件时终止)。
仅供参考,如果您想永久添加此行而不直观地编辑文件,也可以使用sed -i 1i"SET FOREIGN_KEY_CHECKS=0;" dump.sql
。