我已经重命名了一些以前创建的迁移文件,并希望更新 Flyway 的 schema_version 表以包含已应用的迁移的新名称。
我试图创建一个仅更新 schema_version 表中受影响的行的迁移,但是运行此迁移会导致迁移过程挂起,因为 schema_version 表已被锁定。
有没有办法使用迁移更新 schema_version 表中的数据?
我正在使用 MySQL。
不,它总是被锁定的。这是防止多个竞争节点并行迁移数据库的机制的一部分。
您可以将所需的 SQL 放在一个beforeValidate.sql
文件中:
UPDATE schema_version
SET script = 'new_name'
WHERE script = 'old_name'
schema_version
有一个警告:当表在干净的环境中尚不存在时,上述失败。这可以通过使用 Java FlywayCallbacks 来解决,您可以更好地控制错误处理。