2013-02-22 83 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