强制删除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;