ホームページ  >  記事  >  データベース  >  このテーブルを削除できないのはなぜですか?外部キー制約がないにもかかわらず、外部キー制約が失敗する!

このテーブルを削除できないのはなぜですか?外部キー制約がないにもかかわらず、外部キー制約が失敗する!

DDD
DDDオリジナル
2024-11-05 00:37:02484ブラウズ

Why Can't I Drop This Table? Foreign Key Constraint Fails Even Though There Are None!

偽の外部キー制約の失敗の難問

テーブルを削除しようとすると、次のような謎のエラー メッセージが表示されます。親行: 外部キー制約が失敗します。」この複雑な問題は、データベース内に外部キー参照が存在しないことを確認しているにもかかわらず発生します。

テーブル構造を調査すると、「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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。