如何使用Flyway重新应用失败的sql脚本

时间:2016-05-08 14:51:51

标签: flyway

我第一次尝试飞路,评估它如何适合我们的项目。 试图了解失败的方案将如何运作

enter image description here

当然,我接下来做的是,修改了sql脚本,然后重新尝试运行,但得到了校验和错误 enter image description here

这里有三个问题

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

2 个答案:

答案 0 :(得分:2)

在那种情况下,我认为你应该使用“飞路修理”而不是“飞路迁移”

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

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

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

答案 1 :(得分:0)

Upstream坚持手动回滚失败的迁移,然后再次重新应用。没有“跳过”命令。

但是您可以手动修复并完成失败的迁移,并手动将for (int i = 0; i < photo.length(); i++) { JSONObject currentImage = photo.getJSONObject(i); if (currentImage.has("url_s")) { ... } } 更改为"schema_version"."success"