因此,我刚刚阅读并了解了Flyway
中的迁移。
我开发了一个spring-boot
项目,并在项目POM文件中包含了Flyway
。
现在,我在文件中编写了一个SQL
脚本,并将其放在项目的resources/db
文件夹中,而Flyway
似乎已经完成了工作。
可悲的是,SQL
脚本有一些错误,该项目无法编译。相反,它给了我一个SQL
错误。之后,我更改了SQL
脚本并解决了我的错误。现在,当我运行相同的项目时,它会引发错误,提示validation checksum failed
。我重新检查了flyway_schema_history
,它显示了先前的运行脚本。
Flyway
是否应该仅存储正确且可以正常运行的迁移?因为如果错误地在SQL
脚本中存在一些错误,我将必须制作一个脚本并在其中复制我更正的SQL
代码并运行它。 Flyway
中有类似的东西吗?
答案 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)