58

オプションを使用mysqldumpしてMySQLデータベースのバックアップスクリプトを作成し、構造用のファイルとコンテンツ用のファイル(パイプで区切られた)を生成します。--tab.sql.txt

一部のテーブルには外部キーがあるため、インポートするとエラーが発生します。

エラー 1217 (23000) 行 8: 親行を削除または更新できません: 外部キー制約が失敗します

SET FOREIGN_KEY_CHECKS=0私は使用(およびSET FOREIGN_KEY_CHECKS=1その後)について知っています。それらを各.sqlファイルに追加すると、インポートが機能します。しかし、明らかに次の場合、mysqldumpそれらは上書きされます。

また、以下のように別のコマンドとして実行しようとしましたが、エラーが返されます:

echo "SET FOREIGN_KEY_CHECKS=0" | mysql [user/pass/database] 
[all the imports]
echo "SET FOREIGN_KEY_CHECKS=1" | mysql [user/pass/database] 

コマンドラインで FK チェックを無効にする他の方法はありますか?

4

6 に答える 6

147

--init-commandコマンドのパラメータを使用することもできますmysql

すなわち:mysql --init-command="SET SESSION FOREIGN_KEY_CHECKS=0;" ...

MySQL 5.5 ドキュメント - mysql オプション

于 2016-01-14T23:05:33.307 に答える
20

mysql コマンド ラインにログインします。

mysql -u <username> -p -h <host_name or ip>次に実行します

1SET FOREIGN_KEY_CHECKS=0;

2.use database <database_name>

3SOURCE /pathToFile/backup.sql;

4SET FOREIGN_KEY_CHECKS=1;

于 2018-04-18T14:48:48.607 に答える
15

同じことをするためのもう1つのもの:

{ echo "SET FOREIGN_KEY_CHECKS=0;" ; cat imports.sql ; } | mysql
于 2014-01-31T21:25:55.967 に答える
0

コメントと回答に基づいて、InnoDB と MyISAM の両方を使用した圧縮データベースのインポートにこれを使用することになりました。

{ echo "SET FOREIGN_KEY_CHECKS=0;SET UNIQUE_CHECKS=0;" ; zcat dump.gz ; } | mysql
于 2020-01-28T22:32:35.537 に答える