【发布时间】:2022-01-01 00:43:15
【问题描述】:
我在我的应用程序的不同版本中遇到了飞行路径迁移问题。
例如,我的项目有两个版本 - 1.0 和 2.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