我们正在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
文件夹中。