ホームページ  >  記事  >  データベース  >  MySQL でテーブルを削除すると「外部キー制約が失敗しました」というエラーが発生するのはなぜですか?

MySQL でテーブルを削除すると「外部キー制約が失敗しました」というエラーが発生するのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-05 12:34:02563ブラウズ

Why Am I Getting a

「偽の外部キー制約の失敗」謎: 予期せぬエラーの調査

エリア テーブルに対して DROP TABLE ステートメントを実行すると、ユーザーが「親行を削除または更新できません: 外部キー制約が失敗しました。」という謎のエラーが発生します。この一見ややこしい問題は、エリアへの外部キー参照を持つ他のすべてのテーブルを注意深く削除した後でも発生します。

エリア テーブルの詳細を詳しく調べると、このテーブルには主キー (area_id)、一意のキー (nombre_area_UNIQUE)、および null 以外の列のコレクション。 InnoDB テーブルは、個別のスキーマ間で外部キー制約を排除するように設計されているため、存在しないテーブルの外部キーの存在は謎になります。

しかし、問題の核心は、使用されている特定のソフトウェアにあります。 MySQL Query Browser または phpMyAdmin を使用すると、各クエリが新しい接続を開始するという顕著な特徴が生じます。この特異性により、ユーザーは 1 つのクエリ内に一連の Drop ステートメント全体を含める必要があります。

この状況を効果的に修正するには、次の一連のステートメントを展開できます。

<code class="sql">SET FOREIGN_KEY_CHECKS=0;
DROP TABLE my_first_table_to_drop;
DROP TABLE my_second_table_to_drop;
SET FOREIGN_KEY_CHECKS=1;</code>

次のように呼び出します。 SET FOREIGN_KEY_CHECKS=0 の場合、外部キー制約が一時的に無効になり、ターゲット テーブルの削除が容易になります。その後、SET FOREIGN_KEY_CHECKS=1 で制約を再度有効にすると、追加の保護層が提供されます。したがって、再発エラーが回避され、ユーザーは目的のテーブルを正常に削除できるようになります。

以上がMySQL でテーブルを削除すると「外部キー制約が失敗しました」というエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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