首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Grails 3数据库-迁移-插件初始化错误

Grails 3数据库-迁移-插件初始化错误
EN

Stack Overflow用户
提问于 2016-02-01 22:07:39
回答 6查看 2.1K关注 0票数 5

我最近在我的grails 3.0.11应用程序中添加了数据库迁移插件。问题是,当我尝试运行-app时,我得到了以下错误:

代码语言:javascript
复制
ERROR grails.boot.GrailsApp - Application startup failed
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'springLiquibase_dataSource': 
Invocation of init method failed; nested exception is liquibase.exception.ChangeLogParseException: 
java.lang.IllegalArgumentException: Script text to compile cannot be null!

看起来它在我的grails- changelog.xml /migrations文件夹中找不到迁移。我的build.gradle文件包含:

代码语言:javascript
复制
buildscript {
    dependencies {
        classpath "org.grails.plugins:database-migration:2.0.0.RC1"
    }
}

代码语言:javascript
复制
sourceSets {
    main {
        resources {
            srcDir 'grails-app/migrations'
        }
    }
}

我还在application.groovy文件中添加了以下行:

代码语言:javascript
复制
grails.plugin.databasemigration.updateOnStart = true
grails.plugin.databasemigration.updateOnStartFileNames = ['changelog.xml']

我非常感谢任何关于如何让数据库迁移插件正常工作的建议。

编辑:

我使用$grails dbm-create-changelog命令创建了changelog.xml文件

我还添加了build.gradle (根据$grails plugin-info database-migration命令的建议):

代码语言:javascript
复制
dependencies {
    compile "org.grails.plugins:database-migration:2.0.0.RC1"
}

然后我将其更改为(遵循官方文档):

代码语言:javascript
复制
dependencies {
    runtime "org.grails.plugins:database-migration:2.0.0.RC1"
}

然后(根据启动错误手册的建议)我强制执行了liquibase:

代码语言:javascript
复制
dependencies {
    compile 'org.liquibase:liquibase-core:3.3.2'
    runtime 'org.grails.plugins:database-migration:2.0.0.RC1'
}

代码语言:javascript
复制
dependencies {
    compile 'org.liquibase:liquibase-core:3.3.2'
    compile 'org.grails.plugins:database-migration:2.0.0.RC1'
}

问题仍然存在:java.lang.IllegalArgumentException: Script text to compile cannot be null!

EN

回答 6

Stack Overflow用户

发布于 2016-02-10 19:02:03

我们在升级到Grails 3时遇到了同样的问题。

查看grails-database-migration插件的代码可以清楚地看到,配置参数已从列表updateOnStartFileNames更改为单值updateOnStartFileName

因此,当您将配置从

代码语言:javascript
复制
grails.plugin.databasemigration.updateOnStartFileNames = ['changelog.xml']

代码语言:javascript
复制
grails.plugin.databasemigration.updateOnStartFileName = 'changelog.xml'

它应该会再次起作用。

票数 8
EN

Stack Overflow用户

发布于 2017-01-05 06:47:28

我遇到了类似的错误。在我的例子中,我们有一些查找表,我们使用手工制作的脚本填充这些表,该脚本包含在主changelog.groovy中,如下所示:

代码语言:javascript
复制
include file: 'data/001-tablex-data.groovy'

除非文件名不正确-它应该是002-...而不是。错误基本上是相同的,但没有报告指出没有找到/解析哪个包含的文件,这是一个痛苦的问题。因此,如果您手动包含了文件,那么除了检查顶级changelog.groovy或changelog.xml之外,还要查找命名不正确的文件

票数 3
EN

Stack Overflow用户

发布于 2016-03-08 07:23:03

好了,我终于找到了一个解决方案。也许有一天它会帮助到某个人。所以我所做的就是删除changelog.groovy (我从XML切换到Groovy)文件。然后我用$grails dbm-create-changelog changelog.groovy命令生成了一个新的。作为最后一步,我运行了$grails dbm-changelog-sync,一切都开始正常工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35132589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档