如何使用 flyway 跳过特定的迁移?
How to skip a specific migration with flyway?
我在 gradle 中使用 flyway,我在数据库控制台中手动 运行 迁移之一,我想 运行 flyway,但告诉它忽略一个特定的迁移版本介于所有其他版本之间。这可以做到吗?
您需要对它进行一些修改才能使其正常工作,所以我不推荐这种方法,但在紧要关头它会起作用。
我只用 Maven 测试过它,但我很确定它也适用于 Gradle。
迁移到您手动应用的版本之前的版本
# Assuming you applied 01.002 manually
$ mvn flyway:migrate -Dflyway.target=01.001
为您应用的脚本插入一行
-- Make sure these vals closely replicate those from other rows
insert into schema_version( installed_rank, version, description, type, script, checksum, installed_by, installed_on, execution_time, success)
values ( 2, '01.002', 'static_data', 'SQL', 'V01/V01.002__static_data.sql', null, 'username', current_timestamp, 0, true );
修复schema_version
校验和
$ mvn flyway:repair
应用其他迁移
$ mvn flyway:migrate -Dflyway.validateOnMigrate=false -Dflyway.outOfOrder=true
那里的两个 -D
属性可能不是必需的,这取决于您 insert
是否正确。例如,Flyway 可能不同意您的脚本描述,即使校验和现在是正确的。
不推荐但是如果你还想:
1) 运行 flywayMigrate,让迁移失败。
2) 手动更新迁移的特定版本的 flyway meta table(成功列)。
3) 运行 flyway再次迁移。
4) 大功告成,flyway 开始下个版本的迁移
从版本 7 开始,您可以将它直接添加到您的 Maven 或 Grade 文件中
Gradle - 跳过
flyway {
skipExecutingMigrations = true
}
Maven - 跳过
<configuration>
<skipExecutingMigrations>true</skipExecutingMigrations>
</configuration>
Gradle - 樱桃采摘
flyway {
cherryPick = '2.0'
}
Maven - 樱桃采摘
<configuration>
<cherryPick>2.0</cherryPick>
</configuration>
我在 gradle 中使用 flyway,我在数据库控制台中手动 运行 迁移之一,我想 运行 flyway,但告诉它忽略一个特定的迁移版本介于所有其他版本之间。这可以做到吗?
您需要对它进行一些修改才能使其正常工作,所以我不推荐这种方法,但在紧要关头它会起作用。
我只用 Maven 测试过它,但我很确定它也适用于 Gradle。
迁移到您手动应用的版本之前的版本
# Assuming you applied 01.002 manually $ mvn flyway:migrate -Dflyway.target=01.001
为您应用的脚本插入一行
-- Make sure these vals closely replicate those from other rows insert into schema_version( installed_rank, version, description, type, script, checksum, installed_by, installed_on, execution_time, success) values ( 2, '01.002', 'static_data', 'SQL', 'V01/V01.002__static_data.sql', null, 'username', current_timestamp, 0, true );
修复
schema_version
校验和$ mvn flyway:repair
应用其他迁移
$ mvn flyway:migrate -Dflyway.validateOnMigrate=false -Dflyway.outOfOrder=true
那里的两个 -D
属性可能不是必需的,这取决于您 insert
是否正确。例如,Flyway 可能不同意您的脚本描述,即使校验和现在是正确的。
不推荐但是如果你还想:
1) 运行 flywayMigrate,让迁移失败。
2) 手动更新迁移的特定版本的 flyway meta table(成功列)。
3) 运行 flyway再次迁移。
4) 大功告成,flyway 开始下个版本的迁移
从版本 7 开始,您可以将它直接添加到您的 Maven 或 Grade 文件中
Gradle - 跳过
flyway {
skipExecutingMigrations = true
}
Maven - 跳过
<configuration>
<skipExecutingMigrations>true</skipExecutingMigrations>
</configuration>
Gradle - 樱桃采摘
flyway {
cherryPick = '2.0'
}
Maven - 樱桃采摘
<configuration>
<cherryPick>2.0</cherryPick>
</configuration>