偽の外部キー制約の失敗の難問
テーブルを削除しようとすると、次のような謎のエラー メッセージが表示されます。親行: 外部キー制約が失敗します。」この複雑な問題は、データベース内に外部キー参照が存在しないことを確認しているにもかかわらず発生します。
テーブル構造を調査すると、「area_id」列に主キーがあり、「nombre_area」列に一意のキーがあることがわかります。 。データベース内に外部キー制約がないことを考慮すると、なぜこのテーブルが削除プロセスを妨げるのかという論理に反しています。
さらに詳しく調べてみると、興味深い発見がありました。MySQL Query Browser または phpMyAdmin を使用すると、次の結果が得られます。予想に反して、クエリごとに個別の接続が作成されます。この問題を解決するには、単一のクエリですべての Drop ステートメントを実行する必要があります。
次のコード スニペットは、この解決策をカプセル化しています。
SET FOREIGN_KEY_CHECKS=0; DROP TABLE my_first_table_to_drop; DROP TABLE my_second_table_to_drop; SET FOREIGN_KEY_CHECKS=1;
FOREIGN_KEY_CHECKS を 0 に設定すると、外部キー チェックが一時的に無効になります。干渉することなくテーブルを削除できます。テーブルが削除されると、FOREIGN_KEY_CHECKS は 1 に戻され、将来の外部キー制約が確実に適用されます。
この独特の動作は、特に SET FOREIGN_KEY_CHECKS コマンドを使用して外部キー制約を動的に制御することの重要性を強調しています。クエリごとに複数の接続を確立するデータベース管理ツール。
以上がこのテーブルを削除できないのはなぜですか?外部キー制約がないにもかかわらず、外部キー制約が失敗する!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。