Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Grails3/Postgres中配置Flyway?_Grails_Flyway - Fatal编程技术网

如何在Grails3/Postgres中配置Flyway?

如何在Grails3/Postgres中配置Flyway?,grails,flyway,Grails,Flyway,我正在尝试使用Flyway为我的Grails3.2.8应用程序运行迁移。根据您的想法,您只需向build.gradle添加一个依赖项: dependencies { compile "org.flywaydb:flyway-core:4.1.2" } 由于我希望Flyway生成我的模式,我还编辑了application.yml,使其不生成域对象。如果我没有这个设置,Grails将生成我的表,而不是Flyway environments: development: d

我正在尝试使用Flyway为我的Grails3.2.8应用程序运行迁移。根据您的想法,您只需向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
我在这里还看到()可以进行一些额外的配置,因此我将其添加到application.yml中:

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

我也尝试过,没有添加任何配置。我似乎遗漏了什么?

flyway的spring boot自动配置默认情况下依赖于自动配置时可用的单个
数据源

参考文献

但是,如果gorm定义了grails
数据源
,则情况并非如此——这是在引导自动配置之后发生的

一种可能的解决方案是定义一个充当flyway数据源的“别名”
DataSource
bean,将其委托给gorm/grails定义的数据源

@Configuration
class FlywayConfig {

    @Autowired
    DataSource dataSource

    @Bean
    @FlywayDataSource
    DataSource flywayDataSource() {
        return dataSource
    }

}
样本:检查


访问(
jdbc:h2:mem:devDb
)您应该会看到
TEST
表已经创建。

您可以尝试将
位置:classpath:grails-app/conf/db/migrate
更改为
位置:grails-app/conf/db/migrate
编写“实用grails 3”的@erichelgeson吗?在这种情况下,我喜欢今天收到的更新。:-)谢谢你的建议,但没用。当我运行应用程序时,我希望Flyway能够运行迁移,但迁移没有运行。同样,我会尝试将它完全移出grails应用程序。虽然我没有使用Flyway,但似乎大多数用户都将其放在src或其他位置。还有,看看他们是手动设置bean的,你可能想看看你的bean是否被创建了,是的,这会使它更像是在Rails中工作的。Grails内置了很多很好的预配置功能,但是工具箱中肯定没有db迁移。非常好的答案。这些说明需要添加到。谢谢zyro。如果你能帮助一个哑巴?代码如何适应多个数据源?