我们一直在使用Grails了一段时间,我的团队负责人提出了关于Grails的ORM(GORM)一些问题:我们如何在Grails中迁移/更新数据库模式?
- 我们如何保持数据库模式,一旦我们已经转移到生产?
- 我们可以用Grails更新数据库模式吗?
- 如果模式已更新,更改是否会自动反映/框架是否处理此问题?
- 有没有Grails的插件可以让我们无需头痛地更新模式?
我们一直在使用Grails了一段时间,我的团队负责人提出了关于Grails的ORM(GORM)一些问题:我们如何在Grails中迁移/更新数据库模式?
我最近发布了数据库迁移官方Grails的插件 - 在http://grails-plugins.github.com/grails-database-migration/docs/manual/index.html
看到http://grails.org/plugin/database-migration和文档我与Liquibase对这个作者的工作,所以liquibase插件前辈现在已经过时和新版本应该使用最新版本的Liquibase(2.0),并且由SpringSource正式支持。他的公告见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/新插件论坛使用的问题,或直接发送电子邮件的作者:)
虽然“自动创建”功能可以让项目启动并运行,但我发现liquibase是保持db最新的最佳方式。有一个grails plugin,我相信DSL的工作也正在进行。因此,创建一个基线模式(您可以使用liquibase的generate-changelog),然后通过liquibase进行所有未来更改,它将管理更新,回滚以及甚至某些数据库互操作。您可以设置DataSource.groovy中的配置,以验证和Grails将无法启动,如果方案不匹配域的配置:
environments {
development {
dataSource {
dbCreate = "validate"
您还可能有兴趣在liquibase-runner plugin以在应用程序启动运行迁移。
现在我已经试过伯特的数据库插件,它的要好得多 - 使用! – 2011-02-01 20:49:28
为您的生产环境中删除DataSource.groovy
dbCreate
参数 - 这将自动更新数据库架构停止GORM。
当然。使用LiquiBase plugin。
GORM可以用dbCreate='update'
来做,但强烈不建议。例如,如果您重命名一个字段,GORM/LiquiBase永远不会确定您必须迁移数据,而不仅仅是删除+创建。
在一行中:grails db-diff
生成LiquiBase的changelog.xml
和grails migrate -Dgrails.env=<whatever environment>
将其应用于各自的db服务器。
新的数据库插件绝对是最好的选择 – leebutts 2011-01-31 22:14:31