Flyway还原迁移验证

时间:2018-09-27 14:51:50

标签: spring spring-boot flyway

因此,我刚刚阅读并了解了Flyway中的迁移。 我开发了一个spring-boot项目,并在项目POM文件中包含了Flyway

现在,我在文件中编写了一个SQL脚本,并将其放在项目的resources/db文件夹中,而Flyway似乎已经完成了工作。

可悲的是,SQL脚本有一些错误,该项目无法编译。相反,它给了我一个SQL错误。之后,我更改了SQL脚本并解决了我的错误。现在,当我运行相同的项目时,它会引发错误,提示validation checksum failed。我重新检查了flyway_schema_history,它显示了先前的运行脚本。

Flyway是否应该仅存储正确且可以正常运行的迁移?因为如果错误地在SQL脚本中存在一些错误,我将必须制作一个脚本并在其中复制我更正的SQL代码并运行它。 Flyway中有类似的东西吗?

1 个答案:

答案 0 :(得分:1)

Flyway的目的是控制数据库的版本。这只有在严格的版本控制规则的帮助下才有可能,就像每个发布的版本都存储有匹配的校验和一样。发布版本后,就不能删除或操纵它,因为这会影响数据库状态。

validation checksum failed错误Flyway会显示出您正在操作的现有和版本化的SQL文件的效果。

但是-有一些选项可以还原错误的SQL文件:

  • 撤消上一次迁移:
  

所以继续调用

     

flyway undo这将为您提供以下结果:

     

Database: jdbc:h2:file:./foobardb (H2 1.4) Current version of schema "PUBLIC": 2 Undoing migration of schema "PUBLIC" to version 2 - Add people Successfully undid 1 migration to schema "PUBLIC" (execution time 00:00.030s)

https://flywaydb.org/getstarted/undo#undoing-the-last-migration

  • 如果您仍处于早期测试阶段,则还可以删除整个数据库并从新数据库开始...
相关问题