Flyway:如何从迁移中删除大型迁移脚本

Flyway: How to remove a large migration script from migrations

我当前的项目有一些 Flyway 迁移,用于将初始数据导入数据库。此数据特别方便开发人员能够快速设置项目。生产数据通过部分批处理作业导入,版本较新

其中一些迁移非常大(~20MB),因此每次应用程序启动时,Flyway 都需要一些时间来计算迁移的校验和。这也是集成测试的一个问题,因为它们也因此需要更长的时间。

我认为这种方法是对Flyway的误用,我认为迁移工具应该主要用于结构数据。

我想从我们的应用程序中删除这些文件,而是使用配置管理工具(例如 Vagrant、Puppet、Chef)在开发人员环境中导入测试数据。但是,我不能只从应用程序中删除迁移文件,因为 Flyway 会抱怨迁移已记录在数据库中但不存在于应用程序迁移中。

我的第一个想法是创建一个具有高优先级版本号的新迁移

  1. 删除测试数据
  2. 从 schema_version table
  3. 中删除迁移

然后删除迁移脚本。然而,这不起作用,Flyway 仍然抱怨缺少已删除的迁移脚本。 是否存在不能与迁移中的 schema_version table 交互的限制?

我还有哪些其他选择?如果可能的话,我想使用 Flyway 而不是手动执行此操作。

Repair 是您最好的选择。清空这些数据迁移和 运行 repair 命令以根据空文件重新计算它们的校验和。