3

私のプロセスでは、次のようなことを行います。

SET FOREIGN_KEY_CHECKS = 0;
LOAD DATA INFILE '/path/to/mytable.txt' INTO TABLE mytable;
SET FOREIGN_KEY_CHECKS = 1;

ここで、このインポート後のデータが参照整合性を壊していないことを確認する必要があります。私は次のようなことをしたいと思います

check database all foreign_keys;

同様のコマンドはありますか?そうでない場合、この制御を行う方法は?

環境: MySQL v5.1.xx と InnoDB

ありがとう

4

2 に答える 2

3

答え

これは、必要なことを行うコードです。そのようなコマンドはないようです。

歴史

OK、私は MySQL の専門家ではありませんが、無効にしない限り、参照整合性は常に管理されています。最初に制約を削除または無効にしない限り、制約に違反するテーブルに行を挿入することはできません。それらを「チェック」する必要はありません。

それらを「無効」にした場合、それらを有効にするとチェックが強制されます。

これは実際には完全に間違っており、非常に恐ろしいことです。 少なくとも 5.1 では

彼らがその機能を持っていれば、制約を再度有効にしたときにそれを呼び出すだけだと思う​​ので、サーバーで見つかるとは思えません。

于 2010-09-16T20:39:02.603 に答える
1

上記のリンクは残念ながら死んでいます。

このブログ投稿で言及されているスクリプトは、参照されていない FK を表示するのに適しています (ただし、FK が null 可能である場合にも表示されるため、正当に null である可能性があるため、常に役立つとは限りません!)。

http://www.mysqlperformanceblog.com/2011/11/18/eventual-consistency-in-mysql/

于 2012-09-12T14:13:40.700 に答える