如何更改之前应用的飞行路线迁移文件?

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

问题:我们有2个迁移文件,这些文件使用postgres DB中的函数创建了表。这些表是在一年前创建的,此后我们进行了许多新的迁移。根据我们的新标准,我们禁止在表名称中使用单词。

示例:我们不允许将前进的表命名为“ _audit”。创建的表分别命名为“ abc_audit”和“ def_audit”。

禁止'_audit'嵌入在创建表的最新函数中。我们不能仅仅更改表名,因为docker会启动整个新数据库并运行所有迁移文件,并且仅考虑阻止'_audit'表名的最新功能。并且它无法进行原始迁移。

我们该如何解决?我们不想重新设定基准并丢失历史记录。

migration flyway postgres-9.6
1个回答
0
投票

听起来您需要将此命名兼容功能引入版本控制。

  • 从数据库中删除功能
  • 创建创建此功能的版本化迁移
  • 为新迁移提供一个版本,使其可以正确的顺序运行
    • 如果您有V1__abc_audit.sqlV2__def_audit.sql,然后是V3__something_else.sql,则将新迁移命名为V2_1__naming_function.sql

现在,在部署不兼容表之后,此功能将仅在部署过程中部分存在。

对于现有的Flyway部署,我建议使用'out of order'配置选项。您可以执行以下操作:

  • 从数据库中删除功能
  • flyway.outOfOrder设置为true
  • 运行迁移

'乱序'选项表示Flyway将以正确的顺序运行新迁移,尽管它的版本低于当前部署的版本。

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