【问题标题】:Flyway disable Delete migrationsFlyway 禁用删除迁移
【发布时间】:2022-01-01 00:43:15
【问题描述】:

我在我的应用程序的不同版本中遇到了飞行路径迁移问题。 例如,我的项目有两个版本 - 1.02.0。在2.0 版本中,我有一个迁移脚本V1__add_table.sql,其内容为:

CREATE TABLE foo(
    bar boolean
);

当我运行我的项目版本2.0 迁移V1__add_table.sql 时,我可以在flyway_schema_history 表中看到它,类型为SQL。 然后我转到项目版本1.0 并运行它。此版本的项目不包含任何迁移,因此在flyway_schema_history 表中,我为V1__add_table.sql 添加了另一行,类型为DELETED。 问题是当我回到项目版本2.0 Flyway 尝试再次执行迁移,但由于它已经应用而失败。

如何禁用 DELETE 迁移的创建?我希望 Flyway 会默默地忽略迁移,这些迁移已经应用在 success 列中进行检查。

【问题讨论】:

  • 这不是真正的 Git 问题:使用任何版本控制系统都会得到相同的结果。我为此看到的解决方案(通常是迁移,而不是特定于 Flyway,我不知道它是什么)是必须应用降级的“反向迁移”。
  • @torek,但它适用于旧版本的 Flyway。在这种情况下,反向迁移是多余的(据我所知,它们在 FLyway 的付费版本中可用)因为在版本 1.0 中只有未使用的表 foo 不是问题。
  • 是您切换项目但在后端保留相同数据库的根本问题吗?在每种情况下使用不同的数据库对您来说最好吗?还是重置数据库?
  • 请注意,我认为@marcin 的解决方案应该可行。

标签: sql version-control flyway


【解决方案1】:

试试

flyway.ignorePendingMigrations=true

与您的 flyway 安装。当架构历史记录表表明迁移已由较新的部署2.0 执行但在此1.0 版本中尚不可用时,它很有用。

参考:https://flywaydb.org/documentation/configuration/parameters/ignoreFutureMigrations

【讨论】:

  • ignorePendingMigrations 不起作用,“已删除”记录仍会添加到 flyway_schema_version,然后重新应用。
猜你喜欢
  • 2018-10-14
  • 2017-03-16
  • 2021-11-23
  • 2019-12-21
  • 2019-12-27
  • 2013-03-03
  • 2019-01-16
  • 2018-05-10
  • 2020-05-29
相关资源
最近更新 更多