刪除表或數據時遇到錯誤:
[Err] 1451 - Cannot delete or update a parent row: a foreign key constraint fails (...)
原因:外鍵關聯阻止了父表記錄的刪除/更新。臨時關閉外鍵檢查可繞過此限制。
| 操作 | 命令 | 說明 |
|---|---|---|
| 禁用外鍵檢查 | SET FOREIGN_KEY_CHECKS = 0; | 會話級,立即生效,允許刪除被引用的父表行 |
| 啟用外鍵檢查 | SET FOREIGN_KEY_CHECKS = 1; | 恢復預設行為,新操作將再次驗證引用完整性 |
| 查看當前狀態 | SELECT @@FOREIGN_KEY_CHECKS; | 返回 0 或 1 |
SET UNIQUE_CHECKS = 0; 可進一步加速大批量導入。CHECK TABLE ... 或執行一致性檢查腳本。-- 1. 關閉檢查 SET FOREIGN_KEY_CHECKS = 0; SET UNIQUE_CHECKS = 0; -- 2. 執行結構變更/大量導入 TRUNCATE TABLE parent_table; TRUNCATE TABLE child_table; LOAD DATA INFILE ... INTO TABLE parent_table; LOAD DATA INFILE ... INTO TABLE child_table; -- 3. 重新啟用並驗證 SET UNIQUE_CHECKS = 1; SET FOREIGN_KEY_CHECKS = 1; -- 可選:檢查約束完整性 SELECT * FROM information_schema.TABLE_CONSTRAINTS WHERE CONSTRAINT_TYPE='FOREIGN KEY';