我正在尝试使用Flyway为我的Grails 3.2.8应用程序运行迁移。根据{{3}},应该只需要为build.gradle添加依赖项:
dependencies {
compile "org.flywaydb:flyway-core:4.1.2"
}
由于我希望Flyway生成我的架构,我还编辑了application.yml,没有生成域对象。如果我没有这个设置,Grails会生成我的表 - 而不是Flyway。
environments:
development:
dataSource:
dbCreate: none
我还添加了一个迁移文件:
grails-app
conf
db
migration
V1__create_tables.sql
我还在这里阅读(https://flywaydb.org/documentation/plugins/grails)可以完成一些额外的配置,所以我将其添加到application.yml:
flyway:
enabled: true
locations: classpath:grails-app/conf/db/migration
sql-migration-prefix: V
sql-migration-suffix: .sql
我也试过没有任何我添加的配置。我好像错过了什么?
答案 0 :(得分:3)
flyway的spring-boot自动配置默认依赖于自动配置时可用的单个DataSource
bean。
然而,如果gorm定义了grails DataSource
,那就不是这种情况 - 这是在启动autoconfig之后发生的。
一种可能的解决方案是定义一个"别名" DataSource
bean充当flyway dataSource,委托给定义的gorm / grails。
@Configuration
class FlywayConfig {
@Autowired
DataSource dataSource
@Bean
@FlywayDataSource
DataSource flywayDataSource() {
return dataSource
}
}
示例:检查https://github.com/zyro23/stackoverflow-43211960/commit/c4063c900b7f96bc9ba65c84684a14a1992ca2a5
访问http://localhost:8080/dbconsole(jdbc:h2:mem:devDb
)您应该看到TEST
表已创建。