问题:我们有2个迁移文件,这些文件使用postgres DB中的函数创建了表。这些表是在一年前创建的,此后我们进行了许多新的迁移。根据我们的新标准,我们禁止在表名称中使用单词。
示例:我们不允许将前进的表命名为“ _audit”。创建的表分别命名为“ abc_audit”和“ def_audit”。
禁止'_audit'嵌入在创建表的最新函数中。我们不能仅仅更改表名,因为docker会启动整个新数据库并运行所有迁移文件,并且仅考虑阻止'_audit'表名的最新功能。并且它无法进行原始迁移。
我们该如何解决?我们不想重新设定基准并丢失历史记录。
听起来您需要将此命名兼容功能引入版本控制。
V1__abc_audit.sql
和V2__def_audit.sql
,然后是V3__something_else.sql
,则将新迁移命名为V2_1__naming_function.sql
现在,在部署不兼容表之后,此功能将仅在部署过程中部分存在。
对于现有的Flyway部署,我建议使用'out of order'配置选项。您可以执行以下操作:
flyway.outOfOrder
设置为true'乱序'选项表示Flyway将以正确的顺序运行新迁移,尽管它的版本低于当前部署的版本。