可以重命名 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.sqlR_pets_mammals_rodents_view.sql。这还需要重命名/删除原始 R_pets_mammals_view.sql 文件。

我想知道的是,我是否可以做到这一点而不会弄乱我的架构版本控制(可能会在此过程中杀死任何托管环境)?不幸的是,我在 Flyway 文档中找不到这个问题的答案。

P.S.: 我知道,一旦将版本化迁移部署到本地环境之外的任何地方,重命名它们并不是一个好主意。但是,由于可以随意修改可重复迁移(并且由于它们是最后执行的),我不确定它们是否真的在这种情况下“计数”。

【问题讨论】:

【参考方案1】:

从技术角度来看,您可以根据需要添加、删除和重命名可重复的迁移。 Flyway 不会对删除的可重复迁移做任何事情。这些迁移也将保留在schema_version 表中。因此,即使它们已被删除,您仍然可以跟踪在您的架构上执行了哪些可重复迁移。

在您的示例中,您删除了 R__pets_mammals_view.sql 并添加了另外两个视图,“哺乳动物”视图将仅保留在您的架构中,您可以通过版本化迁移(或手动)将其删除。

【讨论】:

以上是关于可以重命名 Flyway 可重复迁移吗?的主要内容,如果未能解决你的问题,请参考以下文章

Rails 迁移:重命名表上的索引

使用 Flyway 更改文件名迁移

Oracle 12C 新特性之在线重命名迁移活跃的数据文件

重命名 MySQL 数据库 [重复]

实体框架迁移重命名表和列

在 itunesconnect 中重命名应用程序 - 迁移数据?