如果占位符发生更改,可重复的飞行路线迁移将不会再次运行



我使用的是可重复的飞行迁移,该迁移会在情况下进行一些数据操作,该数据在情况下应多次运行。我将占位符价值放在opration .sql代码中的注释中。这个想法是从flyway.conf(或改变flyway.conf的bash脚本)更改此占位符价值,并使可重复的迁移运行。

据我所知,更改占位符并不会导致可重复的迁移再次运行。它只会运行一次。看来校验和计算未考虑占位符值。

这是一个功能还是错误?

相反,如果我直接在可重复的迁移内部编辑评论,则检测到更改,迁移将在Flyway的下一个调用中运行。

这是可重复的迁移.sql文件:

    -- The following line will trigger execution of this script appropriately when upgrade.shis executed
    /* ${TRIGGER_DATA_UPDATE} */
    UPDATE  restcomm_accounts SET password = auth_token, password_algorithm = 'md5' WHERE password IS NULL;

trigger_data_update是占位符值。

这是flyway.conf的重要部分:

    flyway.placeholders.TRIGGER_DATA_UPDATE=this_part_changes

您是对的,校验和计算在文件内容上(仅)。这似乎是通过设计。sqlmigrationResolver.java。

作为解决方法,您可能可以将其放入回调中并有条件地运行。我假设您在命令行(如您提到的bash)上,因此将其放入afterMigrate.sql中。您要么需要使用数据库的编程语言(例如PLSQL),要么对Where语句进行创造性。确保打开调试(-X),以便记录回调。即使迁移实际上没有运行任何迁移(即没有待处理),它也将执行。

尝试以下内容:

-- The following line will trigger execution of this script appropriately when upgrade.shis executed
UPDATE  restcomm_accounts SET password = auth_token, password_algorithm = 'md5' WHERE password IS NULL
AND '${TRIGGER_DATA_UPDATE}' = 'Y'
;

最新更新