MySQL DROP所有表,忽略外键

有没有一种很好的简便方法可以从MySQL数据库中删除所有表,而忽略其中可能存在的任何外键约束?

回答:

我发现生成的drop语句集很有用,并建议进行以下调整:

  1. 像这样将生成的drop限制到数据库中:

    SELECT concat(‘DROP TABLE IF EXISTS ', table_name, ';’)

    FROM information_schema.tables

    WHERE table_schema = ‘MyDatabaseName’;

您将需要将输出剪切并粘贴到SQL引擎中以执行它们。

  1. 请注意,根据http://dev.mysql.com/doc/refman/5.5/zh-CN/drop-table.html,使用层叠进行删除是没有意义的/具有误导性的:

“ RESTRICT和CASCADE允许简化移植。在MySQL 5.5中,它们什么也不做。”

因此,如果需要,为了使drop语句起作用:

SET FOREIGN_KEY_CHECKS = 0

这将禁用参照完整性检查-因此,完成所需的删除操作后,您将需要使用

SET FOREIGN_KEY_CHECKS = 1

  1. 最终执行应如下所示:

    SET FOREIGN_KEY_CHECKS = 0;

    – Your semicolon separated list of DROP statements here

    SET FOREIGN_KEY_CHECKS = 1;

注意:要使用SELECT输出更容易,mysql -B选项可以提供帮助。

以上是 MySQL DROP所有表,忽略外键 的全部内容, 来源链接: utcz.com/qa/408664.html

回到顶部