我们已经与Grails合作了一段时间,我的团队负责人提出了一些关于Grails ORM(GORM)的问题:
答案 0 :(得分:10)
我最近发布了用于数据库迁移的官方Grails插件 - 请参阅http://grails.org/plugin/database-migration以及http://grails-plugins.github.com/grails-database-migration/docs/manual/index.html处的文档
我正在与Liquibase的作者合作,因此旧的liquibase插件现已弃用,因为它使用最新版本的Liquibase(2.0)并且得到SpringSource的正式支持,所以应该使用新的liquibase插件。有关他的公告,请参阅http://blog.liquibase.org/2011/01/new-standard-liquibase-plugin-grails-database-migration.html。
在Grails用户邮件列表(来自http://grails.org/Mailing+lists的注册)或http://grails-plugins.847840.n3.nabble.com/上的新插件论坛上提问使用问题,或直接通过电子邮件发送给作者:)
答案 1 :(得分:4)
删除生产环境dbCreate
中的DataSource.groovy
参数 - 这将阻止GORM自动更新数据库架构。
不确定。使用LiquiBase plugin。
GORM可以使用dbCreate='update'
执行此操作,但强烈建议不要这样做。例如,如果重命名字段,GORM / LiquiBase永远无法确定您是否必须迁移数据,而不仅仅是删除+创建。
在一行中:grails db-diff
生成LiquiBase的changelog.xml
,grails migrate -Dgrails.env=<whatever environment>
将其应用于各自的数据库服务器。
答案 2 :(得分:1)
虽然“自动创建”功能可以让项目启动并运行,但我发现liquibase是使数据库保持最新的最佳方法。有一个grails plugin,我相信在DSL上也正在开展工作。
因此,创建一个基线模式(您可以使用liquibase的generate-changelog)然后通过liquibase进行所有未来的更改,它将为您管理更新,回滚甚至一些数据库互操作。您可以将DataSource.groovy配置设置为验证,如果架构与域配置不匹配,grails将无法启动:
environments {
development {
dataSource {
dbCreate = "validate"
您可能还对liquibase-runner plugin感兴趣,可以在应用程序启动时运行迁移。