在MySQL中我想刪除一個表。
我嘗試了很多事情,但我一直收到錯誤,表名爲bericht
的表不能被刪除。這是我得到的錯誤:不能刪除表:外鍵約束失敗
#1217 - 無法刪除或更新父行,外鍵約束失敗
如何刪除該表?
在MySQL中我想刪除一個表。
我嘗試了很多事情,但我一直收到錯誤,表名爲bericht
的表不能被刪除。這是我得到的錯誤:不能刪除表:外鍵約束失敗
#1217 - 無法刪除或更新父行,外鍵約束失敗
如何刪除該表?
使用show create table tbl_name
查看外鍵
你可以使用這個語法來刪除外鍵:這裏
ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol
還有更多的信息(見弗蘭克Vanderhallen後): http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html
這應該做的表引用訣竅:
SET FOREIGN_KEY_CHECKS=0; DROP TABLE bericht; SET FOREIGN_KEY_CHECKS=1;
正如其他人所指出的,這是幾乎從來沒有你想要的東西,即使它是什麼在這個問題問。更安全的解決方案是在刪除bericht
之前根據bericht
刪除表。請參閱CloudyMarble關於如何做到這一點的答案。當我不想或者不能刪除並重新創建數據庫本身時,我使用bash和我的文章中的方法刪除數據庫中的所有表。
的#1217
錯誤發生在其他表有外鍵約束您試圖刪除,並且您使用的是InnoDB數據庫引擎的表。此解決方案暫時禁用檢查限制,然後重新啓用它們。閱讀documentation瞭解更多信息。一定要刪除外鍵約束和字段取決於bericht
表,否則你可能會離開你的數據庫處於中斷狀態。
這可能與其他模式具有相同的表格,因此您會收到該錯誤。
您需要首先刪除子行然後刪除父行。
我意識到這是過時了一段時間,並已選擇一個答案,但如何對替代允許的外鍵是NULL,然後選擇ON DELETE SET NULL。
基本上,你的表應該改變像這樣:
ALTER TABLE 'bericht' DROP FOREIGN KEY 'your_foreign_key';
ALTER TABLE 'bericht' ADD CONSTRAINT 'your_foreign_key' FOREIGN KEY ('column_foreign_key') REFERENCES 'other_table' ('column_parent_key') ON UPDATE CASCADE ON DELETE SET NULL;
個人而言,我會建議使用兩個 「ON UPDATE CASCADE」 以及 「ON DELETE SET NULL」,以避免不必要的併發症,但是你的設置可能決定了不同的方法。
希望這會有所幫助。
找出其他表通過外鍵引用它,並首先刪除該表上的FK約束,然後刪除該表。 –
您需要刪除其他表格上的其他表格而不需要其他表格 – BugFinder
這些答案中的任何一個對您有幫助嗎? http://stackoverflow.com/questions/1905470/cannot-delete-or-update-a-parent-row-a-foreign-key-constraint-fails http://stackoverflow.com/questions/3334619/can not-delete-or-update-a-parent-row-a-foreign-key-constraint-failures –