用flyway截断所有表

问题描述 投票:0回答:2

我是flyway的新手,我不知道是否可以使用flyway截断特定模式中的所有表,所以我想删除此表中的所有数据,但不想删除表。 当我使用 Flyway.clean() 时,它会删除此架构中的所有表,但我不希望这样。谢谢大家

sql postgresql flyway truncate
2个回答
1
投票

正如其他人在评论中提到的,Flyway 目前没有内置方法来截断目标数据库中表中的数据,同时保留架构。

但是,您可以通过多种方式使用 Flyway 来完成这项工作。

例如,您可以:

  • 编写或改编一个脚本来截断数据库中的所有表 - 为了简化排序和执行,我将其编写为可重复迁移
  • 将其存储在自己的迁移文件夹中
  • 当您想要删除所有数据时,请在调用 flyway migrate 时指定该位置

需要考虑的一件事是,用于截断表的脚本通常需要具有特定于数据库平台的逻辑。如果命令未按特定顺序运行,则外键、索引视图等可能会导致截断或删除命令失败或非常慢。


0
投票

当我使用 Flyway.clean() 时,它会删除所有表

是的。您应该在最早的脚本中包含创建这些表的命令。因此,请执行

clean
,然后重新运行所有脚本。

© www.soinside.com 2019 - 2024. All rights reserved.