飞行路线还原迁移验证



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

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

遗憾的是,SQL脚本有一些错误,项目无法编译。相反,它给了我一个SQL错误。之后,我更改了SQL脚本并解决了错误。当我运行同一个项目时,它现在抛出一个错误,说validation checksum failed.我检查了flyway_schema_history,它向我显示了以前的运行脚本。

Flyway不应该只存储那些正确且正常运行的迁移吗?因为如果我错误地在SQL脚本中出现一些错误,我将不得不制作一个脚本并将我更正的SQL代码复制到其中并运行它。Flyway有这样的东西吗?

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

打印Flywayvalidation checksum failed错误正是操作现有和版本控制的 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(

  • 如果您仍处于早期测试阶段,您还可以浏览完整的数据库并从一个新的数据库开始......

最新更新