强制删除mysql绕过外键约束
我试图从数据库中删除除了一个表的所有表,并最终有以下错误:
无法删除或更新父行:外键约束失败
当然,我可以反复试验看看那些关键的约束是什么,并最终删除所有的表,但我想知道是否有一个快速的方法来强制删除所有的表(因为我可以重新插入这些表不想删除)。
Google向我提供了一些build议如下方法的网站:
mysql> SET foreign_key_checks = 0; mysql> drop table ... mysql> SET foreign_key_checks = 1;
简单的答案是,它并没有真正做到这一招,因为我最终收到了同样的错误,而我能够删除更多的表。 我已经看到堆栈溢出的方式来获取所有的外键链接到某个表,但是这太耗费时间,除非我编写脚本(这是可行的,在没有其他select的情况下)
数据库是4.1,所以我不能使用DROP DATABASE
想法?
由于您对保留任何数据不感兴趣,请删除整个数据库并创build一个新的数据库 。
这可能对search结束的人有用。 确保你正在试图删除一个表,而不是一个视图 。
SET foreign_key_checks = 0; - 丢表 放桌子... - 删除视图 下拉查看... SET foreign_key_checks = 1;
SET foreign_key_checks = 0
是设置外键检查closures,然后SET foreign_key_checks = 1
是设置外键检查。 在检查closures的情况下,可以丢弃表格,然后重新打开检查以保持表格结构的完整性。
如果你正在使用phpmyadmin,那么这个function已经在那里了。
- select你要放下的桌子
- 从表格底部的下拉列表中select放下
- 打开一个新的页面,底部有checkbox,显示“外键检查”,取消选中。
- 接受“是”确认删除。
你可以使用下面的步骤,它的工作对我来说,约束下降表,解决scheme已经在上面的评论中解释过,我刚刚添加了屏幕截图 –
Drop数据库存在于所有版本的MySQL中。 但是如果你想保持表格结构,这是一个想法
mysqldump –no-data –add-drop-database –add-drop-table -hHOSTNAME -uUSERNAME -p> dump.sql
这是一个程序,而不是一个mysql命令
然后,login到MySQL和
源dump.sql;