gpt4 book ai didi

grails - 如何在 Grails3/Postgres 中配置 Flyway?

转载 作者:行者123 更新时间:2023-12-02 09:28:19 28 4
gpt4 key购买 nike

我正在尝试使用 Flyway 为我的 Grails 3.2.8 应用程序运行迁移。根据https://flywaydb.org/documentation/plugins/grails只需要向 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://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html )可以完成一些额外的配置,因此我将其添加到 application.yml 中:

flyway:
enabled: true
locations: classpath:grails-app/conf/db/migration
sql-migration-prefix: V
sql-migration-suffix: .sql

我也尝试过不添加任何配置。我好像漏掉了什么?

最佳答案

flyway 的 spring-boot 自动配置默认依赖于自动配置时可用的一个 DataSource bean。

引用。 https://github.com/spring-projects/spring-boot/blob/v1.5.2.RELEASE/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java#L130

但是,如果 gorm 定义了 grails DataSource,则情况并非如此 - 启动自动配置后会发生这种情况。

一种可能的解决方案是定义一个“别名”DataSource bean,充当 Flyway 数据源,委托(delegate)给 gorm/grails 定义的 bean。

@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 表已创建。

关于grails - 如何在 Grails3/Postgres 中配置 Flyway?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43211960/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com