如何使用 Flyway 重新应用失败的 sql 脚本
How to reapply failed sql Scripts with Flyway
我是第一次尝试 flyway,评估它如何适合我们的项目。
试图了解失败场景如何运作
当然,我接下来做的是修改 sql 脚本,然后重新尝试 运行,但出现校验和错误
这里有三个问题
- 所以我想唯一的出路是......需要制作一个格式正确的1.2或手动修改'schema_version' table。对了,还是我遗漏了什么?
- 想知道如果从持续集成工具(Jenkins 或 Bamboo)调用此脚本,这种情况将如何工作。需要手动干预。
- 不确定 Liquibase 等其他工具是否会以不同(更好)的方式运行
在那种情况下我认为你应该使用 "flyway repair" 而不是 "flyway migrate"
https://flywaydb.org/documentation/command/repair
您 post 的一件事不清楚,您 运行 的脚本是单个 DDL 语句还是多个语句,其中一个或多个失败?。之所以问是因为flyway记录了一次迁移的结果,但自己并没有清理'script errors'。根据您使用的数据库,这可以通过 运行 t运行saction 中的 DDL 语句来完成。
Liquibased 与数据库的连接更加紧密,因为它直接与可以用 运行ge 不同格式表示的 DDL 交互。因此,它对 DDL 部署的管理有更严格的控制。
上游坚持手动回滚失败的迁移并再次重新应用。没有 "skip" 命令。
但您可以手动修复并完成失败的迁移并手动将 "schema_version"."success"
更改为 1
。
我是第一次尝试 flyway,评估它如何适合我们的项目。 试图了解失败场景如何运作
当然,我接下来做的是修改 sql 脚本,然后重新尝试 运行,但出现校验和错误
这里有三个问题
- 所以我想唯一的出路是......需要制作一个格式正确的1.2或手动修改'schema_version' table。对了,还是我遗漏了什么?
- 想知道如果从持续集成工具(Jenkins 或 Bamboo)调用此脚本,这种情况将如何工作。需要手动干预。
- 不确定 Liquibase 等其他工具是否会以不同(更好)的方式运行
在那种情况下我认为你应该使用 "flyway repair" 而不是 "flyway migrate"
https://flywaydb.org/documentation/command/repair
您 post 的一件事不清楚,您 运行 的脚本是单个 DDL 语句还是多个语句,其中一个或多个失败?。之所以问是因为flyway记录了一次迁移的结果,但自己并没有清理'script errors'。根据您使用的数据库,这可以通过 运行 t运行saction 中的 DDL 语句来完成。
Liquibased 与数据库的连接更加紧密,因为它直接与可以用 运行ge 不同格式表示的 DDL 交互。因此,它对 DDL 部署的管理有更严格的控制。
上游坚持手动回滚失败的迁移并再次重新应用。没有 "skip" 命令。
但您可以手动修复并完成失败的迁移并手动将 "schema_version"."success"
更改为 1
。