我们知道在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,它将无法正常工作。 有什么想法吗?
答案 0 :(得分:1)
虽然您不能像建议的那样执行此操作,但您可以轻松添加V1.0.0.1__my_additional_change.sql
文件,然后在迁移数据库后1.0.0
之后和1.0.1
之前自动应用。{ / p>