【问题标题】:Flyway Migration Conflict HandlingFlyway迁移冲突处理
【发布时间】:2013-06-02 21:39:34
【问题描述】:

目前,我们公司通过手动创建、分发和运行必要的 SQL 脚本来处理所有数据库架构更改。显然,这会导致问题,因为各种机器会零星且稀疏地更新。

我正在研究更现代的方法来处理这个问题,而 Flyway 是目前领先的候选者(尽管如果可以提出令人信服的论据,我们仍然愿意使用 Liquibase)。

正常的流程很简单,工作方式与宣传的一样简单,但我们不知道如何正确解决冲突的迁移脚本。例如,不同个人分支(A 和 B)的 2 个开发人员在不同的迁移(MigrationA 和 MigrationB)中将同一列添加到表中。分支 B 上的开发人员意识到,在他已经在他的数据库上运行 MigrationB 之后,不需要它。不幸的是,此时损坏已经完成,并且已经向数据库 B 中的 schema_version 表写入了一个条目。由于 Flyway 不支持回滚,在这种情况下应该如何响应?

从历史上看,我们一直尽可能避免删除/重建我们的数据库,但是一旦您使用 Flyway,这种心态就已经过时了吗?我们是否应该彻底地创建 DeveloperData 脚本,以便我们可以在出现这些问题之一时删除我们的数据库?在我开始告诉同事我们需要立即丢弃我们的数据库之前,我想确保我以正确的方式处理这个问题。

感谢任何关于人们如何成功切换到 Flyway 的特定输入答案或更一般的解释/示例。

【问题讨论】:

  • 虽然我支持 dev/Q 的“干净的石板”方法,但来自经验的警告:不要忘记测试从非干净状态的迁移,以及系统在正常情况下如何反应加载。开发人员倾向于只创建一些测试条目,因此一些错误会被忽略。

标签: database-migration flyway


【解决方案1】:

你是对的。

DEV 数据库可以而且应该被视为一次性的,Flyway 完美地支持了这一点。它可以让您在眨眼之间确定性地重新创建它们。这对于您上面描述的场景和许多其他场景(例如设置新测试环境和新开发人员入职)都很重要。

【讨论】:

    猜你喜欢
    • 2020-11-13
    • 2017-05-21
    • 2017-01-24
    • 2019-12-27
    • 2012-08-06
    • 2013-03-03
    • 2012-11-21
    • 2019-01-16
    • 2020-08-05
    相关资源
    最近更新 更多