【发布时间】:2018-11-23 17:48:33
【问题描述】:
我已经重命名了一些以前创建的迁移文件,并希望更新 Flyway 的 schema_version 表以包含已应用的迁移的新名称。
我尝试创建一个仅更新 schema_version 表中受影响行的迁移,但运行此迁移会导致迁移过程挂起,因为 schema_version 表已锁定。
有没有办法使用迁移更新 schema_version 表中的数据?
我正在使用 MySQL。
【问题讨论】:
我已经重命名了一些以前创建的迁移文件,并希望更新 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 来解决,您可以更好地控制错误处理。
【讨论】: