1. ホーム
  2. Mysql

MySQLでテーブルを削除します。親行が削除または更新できません: 外部キー制約に失敗しました。

2022-02-09 04:17:18

MySQL ライブラリに table1 と table2 という 2 つのテーブルがあり、これらは互いに関連しています。 テーブルを削除する際にエラーが発生しました。

親行が削除または更新できません: 外部キー制約に失敗しました。

これは明らかにテーブルの関連付けを生成する強制制約の問題で、削除時にテーブル間の関連付けをチェックバックするため、削除が不可能になるのです。

ソリューション <スパン :

SET foreign_key_checks = 0; // Set foreign key constraints check off first

drop table table1; // Delete the table, and if you want to delete the view, do the same

SET foreign_key_checks = 1; // turn on foreign key constraint checking to maintain the structural integrity of the table

MySQLの環境変数に foreign_key_checks という項目がありますが、これは外部キーをチェックするためのデフォルトの設定項目で、これを0にすると外部キー制約をチェックしないことを意味します。foreign_key_checksの値を確認するには。

show VARIABLES like "foreign%";

実行結果。

mysql> show variables like "foreign%";
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| foreign_key_checks | OFF |
+--------------------+-------+
1 row in set, 1 warning (0.01 sec)


foreign_key_checksの値を0にしたため、OFFと表示されるからです。実行中 SET foreign_key_checks = 1; 1に設定すると、ここのステータスがONになります。

<スパン <スパン 注:テーブルを削除した後は、次のようにするとよいでしょう。 を再度開いて確認します。 ( SET foreign_key_checks = 1 ) を使用して、テーブル構造の整合性を維持します。

<スパン 参考リンク : https://stackoverflow.com/questions/2300396/force-drop-mysql-bypassing-foreign-key-constraint?rq=1