在重新启动应用程序后运行迁移 sql 后,没有执行迁移

时间:2021-01-25 09:48:46

标签: flyway

我正在使用 Flyway 6.5.7 并且我有一个 afterMigrate.sql 截断一个表。我认为脚本只会在发生迁移并且迁移成功时运行。但它总是运行(例如在应用程序重新启动后)

Schema "A_SCHEMA" is up to date. No migration necessary.
Parsing afterMigrate.sql ...
Executing SQL callback: afterMigrate - 

正确吗?如果是这样,有没有办法实现所描述的行为?

注意:org.flywaydb.core.Flyway#migrate 在没有迁移的情况下重启应用程序后返回 0

谢谢

2 个答案:

答案 0 :(得分:0)

它的工作方式是 afterMigrate 回调在任何没有错误的迁移之后运行。成功的迁移就是这样定义的。因此,在您的情况下,您调用了 migrate 命令。它运行成功。它没有迁移任何东西。但是,它运行没有错误,所以 afterMigrate 回调运行了。

答案 1 :(得分:0)

还有可以附加回调的 afterEachMigrate 事件。这会在每次成功执行迁移脚本后运行;如果 migrate 发现无事可做,它不会运行,但不利的一面是,如果 migrate 找到需要运行的多个脚本,它会运行不止一次。根据您推出新脚本的频率,这对您来说可能是更好的解决方案。