我发现生成的drop语句集很有用,并建议进行以下调整:
像这样将生成的drop限制到数据库中:
SELECT concat(‘DROP TABLE IF EXISTS
', table_name, '
;’)
FROM information_schema.tables
WHERe table_schema = ‘MyDatabaseName’;
注意1:这不会执行DROP语句,只是提供了它们的列表。 您将需要将输出剪切并粘贴到SQL引擎中以执行它们。
注意2:如果您有VIEW,则必须将每个DROP TABLE
VIEW_NAME语句`DROP VIEW `VIEW_NAME
手动更正。
- 请注意,根据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
最终执行应如下所示:
SET FOREIGN_KEY_CHECKS = 0;
– Your semicolon separated list of DROP statements here
SET FOREIGN_KEY_CHECKS = 1;
注意:要使用SELECT输出更容易,mysql -B选项可以提供帮助。



