添加新的回调,如“beforeMigrate_V1.0.0.sql”(新功能)

时间:2018-05-30 06:18:49

标签: flyway

我们知道在flyway中有一些回调:beforeMigrate,beforeEachMigrate,afterEachUndo ...

我们的项目需要修复指定的版本sql中的问题,例如V1.0.0而不修改V1.0.0.sql。

有什么办法可以帮助我们吗?我们是否应该支持新的事件BEFORE_INDICATED_VERSION_MIGRATE来处理新的回调文件,例如 beforeMigrate_V1.0.0.sql

举个例子: 我们错过了

SET FOREIGN_KEY_CHECKS = 0;
在V1.1.0.sql中

所以我们想在仅在V1.1.0.sql之前迁移时回调它。 所以我们在beforeEachMigrate.sql中添加了下面的sql:

SELECT version INTO @max_ver FROM `schema_version` ORDER BY version_rank DESC LIMIT 1;
SET FOREIGN_KEY_CHECKS = IF(@max_ver = "1.0.9", 0, @@FOREIGN_KEY_CHECKS);
SET FOREIGN_KEY_CHECKS = IF(@max_ver = "1.1.0", 1, @@FOREIGN_KEY_CHECKS);

一般情况下它有效。但如果我们有一天添加V1.0.9.1,它将无法正常工作。 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

虽然您不能像建议的那样执行此操作,但您可以轻松添加V1.0.0.1__my_additional_change.sql文件,然后在迁移数据库后1.0.0之后和1.0.1之前自动应用。{ / p>