可以重命名 Flyway 可重复迁移吗?
Posted
技术标签:
【中文标题】可以重命名 Flyway 可重复迁移吗?【英文标题】:Is it OK to rename Flyway repeatable migrations? 【发布时间】:2018-01-22 02:49:34 【问题描述】:我为我的项目设置了一堆可重复的迁移来删除(并重新创建)一些经常修改的数据库视图。包结构如下所示:
src/main/resources
|-db
|-R__pets_amphibians_view.sql
|-R__pets_birds_view.sql
|-R__pets_mammals_view.sql
|-R__pets_reptiles_view.sql
|-...
|-<versioned-migrations>
现在,我想做的是将R__pets_mammals_view.sql
视图拆分为两个更具体的视图:例如分别为R__pets_mammals_dogs_view.sql
和R_pets_mammals_rodents_view.sql
。这还需要重命名/删除原始 R_pets_mammals_view.sql
文件。
我想知道的是,我是否可以做到这一点而不会弄乱我的架构版本控制(可能会在此过程中杀死任何托管环境)?不幸的是,我在 Flyway 文档中找不到这个问题的答案。
P.S.: 我知道,一旦将版本化迁移部署到本地环境之外的任何地方,重命名它们并不是一个好主意。但是,由于可以随意修改可重复迁移(并且由于它们是最后执行的),我不确定它们是否真的在这种情况下“计数”。
【问题讨论】:
【参考方案1】:从技术角度来看,您可以根据需要添加、删除和重命名可重复的迁移。 Flyway 不会对删除的可重复迁移做任何事情。这些迁移也将保留在schema_version
表中。因此,即使它们已被删除,您仍然可以跟踪在您的架构上执行了哪些可重复迁移。
在您的示例中,您删除了 R__pets_mammals_view.sql
并添加了另外两个视图,“哺乳动物”视图将仅保留在您的架构中,您可以通过版本化迁移(或手动)将其删除。
【讨论】:
以上是关于可以重命名 Flyway 可重复迁移吗?的主要内容,如果未能解决你的问题,请参考以下文章