2013-02-22 84 views
3

我从一台服务器上备份了一个数据库,并试图在另一台服务器上恢复它。在mysql命令行中恢复数据库

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 @[email protected]@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; 

它会工作吗?我的数据库重装需要数小时才能完成。所以我在这之前花点时间在这里寻求帮助。

感谢您的帮助。

回答

1

通常,我只需输入2个sql文件 - 首先,与SET FOREIGN_KEY_CHECKS=0;一行,然后转储文件。您不必担心将其设置回来;它只会持续当前会话(当文件被加载时会终止)。

仅供参考,如果您想在不直观编辑文件的情况下永久预置此行,也可以使用sed -i 1i"SET FOREIGN_KEY_CHECKS=0;" dump.sql

+0

我还没试过呢。但它有助于继续。谢谢 – Slowcoder 2013-02-26 02:25:45