1. 程式人生 > 其它 >mysql刪除表時報錯:Cannot delete or update a parent row: a foreign key constraint fails 解決辦法

mysql刪除表時報錯:Cannot delete or update a parent row: a foreign key constraint fails 解決辦法

技術標籤:mysqlmysql資料庫

參考StackOverflow:https://stackoverflow.com/questions/2300396/force-drop-mysql-bypassing-foreign-key-constraint?rq=1

原因:表之間存在外來鍵約束,刪除時會檢查表之間的關聯關係,導致刪不掉

解決辦法:

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%";

on表示開啟狀態,mysql會檢查表之間的關聯關係。

注意:在刪除完表之後,最好是重新開啟檢查(SET foreign_key_checks = 1) 以保持表格結構的完整性。