在Flyway中手动更新schema_version表

时间:2013-07-15 14:01:00

标签: mysql flyway

我已重命名了一些以前创建的迁移文件,并希望更新Flyway的schema_version表,以包含已应用的迁移的新名称。

我尝试创建一个只更新schema_version表中受影响的行的迁移,但运行此迁移会导致迁移过程挂起,因为schema_version表已被锁定。

有没有办法使用迁移来更新schema_version表中的数据?

我正在使用MySQL。

2 个答案:

答案 0 :(得分:1)

没有。它总是被锁定。这是防止多个竞争节点并行迁移数据库的机制的一部分。

答案 1 :(得分:0)

您可以将所需的SQL放在beforeValidate.sql文件中:

UPDATE schema_version
SET script = 'new_name'
WHERE script = 'old_name'

有一个警告:当schema_version表在干净的环境中尚不存在时,以上操作将失败。可以使用Java FlywayCallbacks解决此问题,在Java FlywayCallbacks中您可以更好地控制错误处理。