如何回滚 Flyway Scala 中的迁移?

Posted

技术标签:

【中文标题】如何回滚 Flyway Scala 中的迁移?【英文标题】:How to rollback a migration in Flyway Scala? 【发布时间】:2017-08-18 23:49:55 【问题描述】:

我刚刚进行了迁移file.sql 以将新表添加到数据库中,然后我运行了flywayMigrate 命令sbt flywayMigrate。现在我意识到我错过了在同一个表中添加两列。我可以选择编写另一个迁移,但是当我可以回滚并更改刚刚创建的表并添加两列的迁移时,我不想增加迁移的数量。你能告诉我如何回滚一些迁移并更改它们,然后再次运行 sbt flywayMigrate 吗?

【问题讨论】:

【参考方案1】:

您不必重新运行整个迁移。有一张 flyway 用于元数据的表,我认为它称为schema_version。您可以设置最后应用的迁移 id(有一些哈希要设置 IIRC,但如果它们不匹配,您将能够从错误消息中找出它们)并且 flyway 将从那里拾取。

【讨论】:

flywaydb.org/getstarted/how 更详细地描述了它的工作原理。【参考方案2】:

如@987654321 中所述,不支持回滚脚本。

您可以选择:

从备份中恢复您的数据库 删除并重新创建数据库以重新运行所有迁移脚本 手动回滚迁移并从元数据表中删除其记录

【讨论】:

只需连接到数据库并运行适当的 DDL 即可删除添加的表/列并恢复您所做的任何其他更改。

以上是关于如何回滚 Flyway Scala 中的迁移?的主要内容,如果未能解决你的问题,请参考以下文章

尝试在 sql-server 上迁移时 Flyway 挂起

使用flyway迁移到Google Cloud SQL,应该复制哪些jar文件?

运行 flyway java 迁移

如何从 IntelliJ IDEA 中的模型类生成 Flyway 迁移脚本?

手动更改表中的varchar大小后如何同步Flyway迁移文件?

使用 Spring Boot 记录 Flyway sql