MySQL刪除表:Cannot delete or update a parent row: a foreign key constraint fails。

MySQL庫中有倆表,table1和table2,相互關聯,在刪除表的時候出錯:

Cannot delete or update a parent row: a foreign key constraint fails。

很明顯這是表關聯生成的強制約束問題,在刪除的時候回檢查表之間的關聯關係,從而導致無法刪除。

解決辦法

SET foreign_key_checks = 0;  // 先設置外鍵約束檢查關閉

drop table table1;  // 刪除表,如果要刪除視圖,也是如此

SET foreign_key_checks = 1; // 開啓外鍵約束檢查,以保持表結構完整性

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
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章