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!
升级到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)
它应该再次工作.
确保:
grails-app/migrations/changelog.xml存在且有效。如何执行此操作取决于您的情况。该插件的文档中有一个部分介绍如何最初创建该文件。
changelog.xml适用的数据库。