dev
和test
,用于开发和测试环境。在每个环境中,我使用不同的数据库,即在dev中使用h2
,而在testing中使用postgresql
。以下是每个配置文件的属性文件,其中{vendor}
由spring boot解析为相应的h2
和postgresql
。
application-dev.properties
spring.flyway.locations=classpath:db/migration/{vendor}
application-test.properties
#Data source
spring.datasource.url=jdbc:postgresql://localhost:5432/test
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
#Flyway
spring.flyway.check-location=false
spring.flyway.locations=classpath:/db/migration/test/{vendor}
针对dev
配置文件的Flyway迁移文件位于test/resources
目录下,而针对test
配置文件的迁移文件位于main/resources
目录下。
test
配置文件运行我的应用程序时,它只会在main/resources
下选择迁移文件,这个功能正常。然而,当我使用dev
配置文件运行我的单元测试时,我希望它只会在src/test/resources/db/migration/h2
下选择文件。但是Flyway选取了来自main/resources
和test/resources
的迁移文件,导致错误。
我不理解这种行为。有什么建议可以修复这个问题吗?org.flywaydb.core.api.FlywayException: 找到多个版本为1的迁移