假外鍵約束失敗難題
嘗試刪除表時,您遇到神秘的錯誤訊息:「無法刪除或更新父行:外鍵約束失敗。
調查表結構發現它在「area_id」列上擁有一個主鍵,在「nombre_area」列上擁有一個唯一鍵。考慮到資料庫中沒有任何外鍵約束,它違反了為什麼該表會阻礙刪除過程的邏輯。
經過進一步探索,出現了一個奇怪的發現:使用 MySQL 查詢瀏覽器或 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中文網其他相關文章!