如何解决MySQL DROP 所有表,忽略外键
我发现生成的 drop 语句集很有用,并推荐以下调整:
-
将生成的 drop 限制在您的数据库中,如下所示:
SELECT concat(‘DROP TABLE IF EXISTS
', table_name, '
;’) FROM information_schema.tables WHERE table_schema = ‘MyDatabaseName’;
您需要将输出剪切并粘贴到 SQL 引擎中以执行它们。
- 请注意,根据http://dev.mysql.com/doc/refman/5.5/en/drop-table.html,级联删除是没有意义的/具有误导性的:
“允许 RESTRICT 和 CASCADE 使移植更容易。在 MySQL 5.5 中,它们什么都不做。”
因此,如果您需要,为了使 drop 语句起作用:
SET FOREIGN_KEY_CHECKS = 0
这将禁用参照完整性检查 - 因此,当您完成所需的删除操作后,您将需要重置密钥检查
SET FOREIGN_KEY_CHECKS = 1
-
最终执行应如下所示:
SET FOREIGN_KEY_CHECKS = 0; – Your semicolon separated list of DROP statements here SET FOREIGN_KEY_CHECKS = 1;
注意:要更轻松地使用 SELECT 的输出,mysql -B 选项会有所帮助。
解决方法
有没有一种简单的方法可以从 MySQL 数据库中删除所有表,而忽略其中可能存在的任何外键约束?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。