Flyway-针对特定环境的不同迁移-Spring Boot



我们正在Spring Boot应用程序中用java配置/启动我们的flyway迁移。

因此,我们同时拥有sql和java迁移文件。

在某些环境中,我们希望运行额外的迁移。基本上,在QA环境中,我们希望为DB准备用于测试的数据。

所以我知道您可以在java中配置多个迁移位置。

所以我可以做一些类似的事情

if(isQAenv == true)
{
Flyway.configure().locations("/db/migrations/","db/qaMigrations/")
else{
Flyway.configure().locations("/db/migrations/")
}

我的问题是版本控制和确保在所有环境中按预期执行。

我需要保持编号系统的正确顺序吗?

因此,假设我有以下迁移脚本,应该在所有环境中运行

db/migrations/V1__table1.sql
db/migrations/V2__table2.sql
db/migrations/V4__table2.sql

此迁移仅在QA env 中运行

db/qaMigrations/V3__insert_statements.sql

现在,在非QA环境中,我的beacon_history_table有1,2,4的迁移。有什么方法可以避免这种情况,并在历史记录表中有一些看起来更干净的东西吗?

您可以使用配置文件轻松完成这一操作,因此假设您有配置文件,即dev、prod,那么您可以在属性文件中为该配置文件或在application.yml文件中的该配置文件的一节中轻松定义spring.flyway.locations路径。

spring:
profiles: prod
flyway:
locations: classpath:/db/migration,classpath:/prod/db/migration
---
spring:
profiles: dev
flyway:
locations: classpath:/db/migration,classpath:/dev/db/migration

或者,如果你有properties文件,那么你应该有文件,即application-dev.properties,然后是

spring.flyway.locations=classpath:/db/migration,classpath:/dev/db/migration

上面提到的所有路径都应该存在于resources文件夹中。

最新更新