当前位置: 首页 > 面试题库 >

MySQL DROP所有表,忽略外键

魏鸿哲
2023-03-14
问题内容

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


问题答案:

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

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

    SELECT concat(‘DROP TABLE IF EXISTS ', table_name, ';’)
    FROM information_schema.tables
    WHERE table_schema = ‘MyDatabaseName’;

注意1:这不会执行DROP语句,只是提供了它们的列表。 您将需要将输出剪切并粘贴到SQL引擎中以执行它们。

注意2:如果您有VIEW,则必须将每个DROP TABLEVIEW_NAME语句`DROP VIEW `VIEW_NAME手动更正。

  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选项可以提供帮助。



 类似资料:
  • 例如: 问题是,当我使用ObjectMapper进行序列化时,它会尝试序列化DbItem类的成员。有没有什么简单的方法可以预防呢?例如使用注释。 我看过一个类似的问题Jackson序列化:如何忽略超类属性,但我希望它可以做得更简单,我不确定我是否可以这样做,因为我不能更改超类,因为它在一个外部库中。

  • 问题内容: 我正在使用ORM进行开发,在其中我扩展了基orm类来创建表。 例如: 问题是,当我使用ObjectMapper进行序列化时,它将尝试序列化DbItem类的成员。有没有简单的方法可以防止这种情况?例如带有注释。 我看过一个类似的问题,杰克逊序列化:如何忽略超类属性,但我希望可以将其简化,而且我不确定是否可以这样做,因为我无法更改超类,因为它位于外部库。 问题答案: 您可以使用混入或 对于

  • 我将WireMock作为独立进程启动: Java-jar wiremock-standalone-2 . 6 . 0 . jar-port 8080-v 还行。 当超文本传输协议请求内容后缀时 /api/profile/Favorite/WireMock必须返回存根响应。对所有其他请求必须通过WireMock忽略,并且必须转发到正式服。 我必须如何配置WireMock?

  • 忽略列表显示不需要处理的资源或一类规则建议。 忽略列表显示不需要处理的资源或一类规则建议。当某资源或某类型的建议不需要用户处理时,可以通过忽略或忽略该类建议功能将其显示在忽略列表。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “优化建议/安全检查/忽略列表” 菜单项,进入忽略列表页面。 恢复 当忽略列表中某资源或某规则建议需要用户关注处理时,可以使用恢复功能将其显示在建议列表。

  • 忽略列表显示不需要处理的资源或一类规则建议。 忽略列表显示不需要处理的资源或一类规则建议。当某资源或某类型的建议不需要用户处理时,可以通过忽略或忽略该类建议功能将其显示在忽略列表。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “优化建议/成本优化/忽略列表” 菜单项,进入忽略列表页面。 恢复 当忽略列表中某资源或某规则建议需要用户关注处理时,可以使用恢复功能将其显示在建议列表。

  • 我的目标是将jsonObject转换为Class。我只想添加在类中批注的字段。例如:json 对象包含 50 个字段。类有 4 个字段。我只想映射精确的4个字段,而不在类中添加46个加法忽略。 JSON: 类: 用户类没有地址字段。我的目标是排除它,因为它没有注释。