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