Grails 3 database-migration-plugin初始化错误

iTi*_*ger 5 grails liquibase grails-3.0

我最近在我的grails 3.0.11应用程序中添加了database-migration-plugin.问题是当我尝试运行应用程序时出现以下错误:

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!
Run Code Online (Sandbox Code Playgroud)

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

buildscript {
    dependencies {
        classpath "org.grails.plugins:database-migration:2.0.0.RC1"
    }
}
Run Code Online (Sandbox Code Playgroud)

sourceSets {
    main {
        resources {
            srcDir 'grails-app/migrations'
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

grails.plugin.databasemigration.updateOnStart = true
grails.plugin.databasemigration.updateOnStartFileNames = ['changelog.xml']
Run Code Online (Sandbox Code Playgroud)

我非常感谢任何有关如何使数据库迁移插件正常工作的建议.

编辑:

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

我还添加到build.gradle(由$grails plugin-info database-migration命令建议):

dependencies {
    compile "org.grails.plugins:database-migration:2.0.0.RC1"
}
Run Code Online (Sandbox Code Playgroud)

然后我将其更改为(以下官方文档):

dependencies {
    runtime "org.grails.plugins:database-migration:2.0.0.RC1"
}
Run Code Online (Sandbox Code Playgroud)

然后(正如手册中的启动错误所示)我强迫liquibase:

dependencies {
    compile 'org.liquibase:liquibase-core:3.3.2'
    runtime 'org.grails.plugins:database-migration:2.0.0.RC1'
}
Run Code Online (Sandbox Code Playgroud)

dependencies {
    compile 'org.liquibase:liquibase-core:3.3.2'
    compile 'org.grails.plugins:database-migration:2.0.0.RC1'
}
Run Code Online (Sandbox Code Playgroud)

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

Han*_*rds 7

升级到Grails 3时遇到了同样的问题.

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

所以当你改变配置时

grails.plugin.databasemigration.updateOnStartFileNames = ['changelog.xml']
Run Code Online (Sandbox Code Playgroud)

grails.plugin.databasemigration.updateOnStartFileName = 'changelog.xml'
Run Code Online (Sandbox Code Playgroud)

它应该再次工作.


nps*_*irk 0

确保:

  1. 您已设置变更日志,即文件grails-app/migrations/changelog.xml存在且有效。

如何执行此操作取决于您的情况。该插件的文档中有一个部分介绍如何最初创建该文件。

  1. 您的数据源设置为使用changelog.xml适用的数据库。