在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 –