我在Flyway 4.2.0中有可重复的Java迁移问题。Flyway:校验和和可重复的Java迁移
例如,我编写了一个可重复的Java迁移,该迁移为具有特定列的每个表创建一个触发器。此迁移的ChecksumProvider计算缺少触发器的表的连接名称的哈希码。
@Override
public int getChecksum(Connection conn) throws SQLException {
return queryTableNames(conn).stream().collect(Collectors.joining(",")).hashCode();
}
当表的列表是空的,散列码是零,没有什么应该做的。
当表的列表不为空时,哈希码与零不同(命名为xxx),并且每个表都将适合的触发器添加到数据库中。 在这种情况下,hascode xxx被写入“schema_version”。 下次flyway:info被执行时,它会显示过期的迁移,因为所有触发器都存在,并且新的校验和为零。所以我必须做一个“飞行道路:修复”或额外的“飞行道路:迁移”来获得一个干净的表格“schema_version”。
是否有简单的机会自动更新Java可重复迁移后的校验和?
我检查了FlywayCallback.afterEachMigrate,但只有对MigrationInfo的只读访问权限。使用这种方法的进一步步骤将使用太多飞路内部(即分别更新“schema_version”)。
实施自己的MigrationResolver加上自定义的MigrationExecutor似乎太重了。