问题描述
我是 flyway 的新手,我不知道是否可以使用 flyway 截断特定架构中的所有表,所以我想删除此表中的所有数据,但不想删除表。 当我使用 flyway.clean() 时,它会删除此架构中的所有表,我不想要那样。谢谢各位
解决方法
正如其他人在评论中提到的,Flyway 目前没有内置的方法来截断目标数据库中的表中的数据,同时保留架构。
不过,您可以通过 Flyway 完成这项工作。
例如,您可以:
- 编写或改编一个脚本来截断数据库中的所有表 - 为简化排序和执行,我将其编写为 repeatable migration
- 将其存储在自己的迁移文件夹中
- 如果您想删除所有数据,请在调用 flyway migrate 时指定该位置
需要考虑的一件事是,您用来截断表的脚本通常需要具有特定于数据库平台的逻辑。如果命令未按特定顺序运行,诸如外键、索引视图等可能会导致截断或删除命令失败或非常慢。