【问题标题】:How to reapply failed sql Scripts with Flyway如何使用 Flyway 重新应用失败的 sql 脚本
【发布时间】:2018-09-16 22:28:37
【问题描述】:

我是第一次尝试 flyway,评估它将如何适应我们的项目。 试图了解失败场景将如何运作

我接下来自然是修改了sql脚本,重新尝试运行,但是得到校验和错误

这里有三个问题

  1. 所以我想唯一的出路是……需要制作一个格式正确的 1.2 或手动修改“schema_version”表。对,还是我错过了什么?
  2. 想知道如果从持续集成工具(JenkinsBamboo)调用此脚本,这样的场景将如何工作。需要手动干预。
  3. 不确定像 Liquibase 这样的其他工具是否会以不同(更好)的方式运行

【问题讨论】:

    标签: flyway


    【解决方案1】:

    在这种情况下,我认为您应该使用“flyway repair”而不是“flyway migrate”

    https://flywaydb.org/documentation/command/repair

    您的帖子中不清楚的一件事是您运行单个 DDL 语句或多个语句的脚本,其中一个或多个失败?询问的原因是 flyway 记录了迁移的结果,但本身并不清理“脚本错误”。根据您使用的数据库,这可以通过在事务中运行 DDL 语句来完成。

    Liquibased 与数据库的连接更加紧密,因为它直接与可以以多种不同格式表示的 DDL 交互。因此,它对 DDL 部署的管理有更严格的控制。

    【讨论】:

    • 感谢您的快速回复。因为我正在尝试,所以我只有一个 DDL 语句。但是是的,在实际项目中,它不仅仅是 DDL(或 DML)声明......
    • 对不起,我只比你早几天了解飞行路线,到目前为止我还没有找到很多例子。
    【解决方案2】:

    Upstream 坚持手动回滚失败的迁移并重新应用它。没有“跳过”命令。

    但是您可以手动修复并完成失败的迁移,然后手动将"schema_version"."success" 更改为1

    【讨论】:

    • 它至少会认为它好像迁移成功,然后服务器将毫无例外地启动
    猜你喜欢
    • 2013-04-09
    • 1970-01-01
    • 2021-01-02
    • 2020-04-26
    • 1970-01-01
    • 2020-05-24
    • 2020-02-25
    • 2017-02-04
    • 2012-08-09
    相关资源
    最近更新 更多