首页 文章

强制drop mysql绕过外键约束

提问于
浏览
116

我试图删除数据库中的所有表,除了一个,我最终得到以下错误:

无法删除或更新父行:外键约束失败

当然,我可以试错,看看那些关键约束是什么,并最终删除所有表但我想知道是否有一种快速方法强制删除所有表(因为我将能够重新插入那些我不想删除) .

谷歌针对某些建议使用以下方法的网站:

mysql> SET foreign_key_checks = 0;
mysql> drop table ...
mysql> SET foreign_key_checks = 1;

简短的回答是它没有真正做到这一点,因为我最终收到了同样的错误,而我能够删除更多的表 . 我已经在Stack Overflow上看到了将所有外键链接到某个表的方法,但这样做太费时了,除非我编写所有脚本(在没有其他选项的情况下这是可行的)

数据库是4.1所以我不能使用 DROP DATABASE

想法?

5 回答

  • 3

    由于您不想保留任何数据,drop the entire database并创建一个新数据 .

  • 5

    这可能对从搜索到此处结束的人有用 . 确保你试图放弃 table 而不是 view .

    SET foreign_key_checks = 0;
    -- Drop tables
    drop table ...
    -- Drop views
    drop view ...
    SET foreign_key_checks = 1;
    

    SET foreign_key_checks = 0 是将外键检查设置为关闭,然后 SET foreign_key_checks = 1 将重新设置外键检查 . 当关闭检查时,可以删除表,然后重新打开检查以保持表结构的完整性 .

  • 14

    如果您使用的是 phpmyadmin ,则此功能已经存在 .

    • 选择要删除的表

    • 从表格底部的下拉列表中,选择drop

    • 将打开一个新页面,底部有一个复选框,上面写着"Foreign key check",取消选中它 .

    • 接受"yes"确认删除 .

  • 336

    你可以使用以下步骤,它对我来说是有约束的表,解决方案已经在上面的评论中解释过,我只是添加了屏幕截图 -
    enter image description here

  • -15

    Drop数据库存在于MySQL的所有版本中 . 但是如果你想保持表结构,这是一个想法

    mysqldump --no-data --add-drop-database --add-drop-table -hHOSTNAME -uUSERNAME -p> dump.sql

    这是一个程序,而不是mysql命令

    然后,登录到mysql和

    source dump.sql;

相关问题