设置新基线后更改飞行路线迁移文件

raz*_*azr 5 java database flyway

我已将 Flyway 集成到我的一个项目中。我有很多迁移,迁移一个新的空数据库需要很长时间,主要是因为一路上还添加了种子数据。现在我想改变它。不幸的是,这些迁移已经被推送到生产中(是的,在某些时候种子数据也被迁移到了那里)。

我的想法是为当前版本的生产系统设置基线,然后清理旧的迁移:压缩模式迁移并将种子和测试数据移动到一个新位置,该位置未部署到生产中。

现在我的问题是:

  1. 如何在我的生产数据库中设置基线而不影响所有其他数据库?flyway baseline ...直接调用数据库?或者我可以使用任何类型的特殊迁移文件吗?也许将基线行直接写入schema_version数据库的表中?这样的查询会是什么样子?
  2. 我最新的迁移是V4_6_3__.... 所以我的基线需要开启V5__...?还是V4__...包含所有具有相同主要版本的迁移就足够了?
  3. 设置基线后,是否可以/保存添加、编辑和删除早于基线的迁移,而不会在下一个迁移任务中破坏我的生产数据库?

对于基本问题很抱歉,但在我看来,飞行路线文档根本没有帮助......

提前致谢!

raz*_*azr 3

抱歉回复晚了。我做了一件与@markdsievers建议的非常相似的事情:

我保证生产环境至少是Xflyway.setTarget(X))版本。然后我更改为新的架构版本表 ( flyway.setTable('temporary_schema_version')) 并运行一次迁移,删除了旧表。之后,我将架构版本表更改回原始表,为版本设置基线Y > X,并运行另一次迁移来删除临时表。

现在我可以编辑/压缩/删除版本低于该版本的所有迁移,而Y不会导致我的生产部署崩溃。