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ファイルはサイズが非常に大きいので、開いて編集することはできません。したがって、ダンプを追加する代わりにSET FOREIGN_KEY_CHECKS=0;、次のようにmysqlコマンドライン内に直接設定できますか?

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

それは機能しますか?データベースのリロードが完了するまでに数時間かかります。だから私はこれに何時間も費やす前にここで助けを求めています。

助けてくれてありがとう。

4

1 に答える 1

1

通常、2つのSQLファイルをパイプします。最初に、を含む1つのライナーを作成しSET FOREIGN_KEY_CHECKS=0;、次にファイルをダンプします。それを元に戻すことを心配する必要はありません。現在のセッションの間だけ持続します(ファイルがロードされると終了します)。

sed -i 1i"SET FOREIGN_KEY_CHECKS=0;" dump.sql参考までに、ファイルを視覚的に編集せずにこの行を永続的に追加する場合にも使用できます。

于 2013-02-23T02:58:29.340 に答える