Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我们如何在Grails中迁移/更新数据库模式?_Java_Orm_Grails_Groovy - Fatal编程技术网

Java 我们如何在Grails中迁移/更新数据库模式?

Java 我们如何在Grails中迁移/更新数据库模式?,java,orm,grails,groovy,Java,Orm,Grails,Groovy,我们已经与Grails合作了一段时间,我的团队负责人提出了一些关于Grails ORM(GORM)的问题: 一旦进入生产环境,我们如何维护数据库模式 我们可以用Grails更新数据库模式吗 如果模式被更新,更改是否会自动反映出来/框架是否考虑到了这一点 是否有任何Grails插件可以让我们在不头疼的情况下更新模式 虽然“自动创建”功能可以让项目启动并运行,但我找到了保持数据库最新的最佳方法。还有一个问题,我相信DSL的工作也在进行中 因此,创建一个基线模式(您可以使用liquibase的gene

我们已经与Grails合作了一段时间,我的团队负责人提出了一些关于Grails ORM(GORM)的问题:

  • 一旦进入生产环境,我们如何维护数据库模式
  • 我们可以用Grails更新数据库模式吗
  • 如果模式被更新,更改是否会自动反映出来/框架是否考虑到了这一点
  • 是否有任何Grails插件可以让我们在不头疼的情况下更新模式
  • 虽然“自动创建”功能可以让项目启动并运行,但我找到了保持数据库最新的最佳方法。还有一个问题,我相信DSL的工作也在进行中

    因此,创建一个基线模式(您可以使用liquibase的generate changelog),然后通过liquibase进行所有未来的更改,它将为您管理更新、回滚甚至一些db互操作。您可以将DataSource.groovy配置设置为验证,如果架构与域配置不匹配,grails将不会启动:

    environments {
        development {
            dataSource {
                dbCreate = "validate"
    
    您可能还对在应用程序启动时运行迁移的方法感兴趣

  • 为您的生产环境删除
    DataSource.groovy
    中的
    dbCreate
    参数-这将阻止GORM自动更新数据库模式

  • 当然。使用

  • GORM可以通过
    dbCreate='update'
    来实现,但强烈建议不要这样做。例如,如果重命名字段,GORM/LiquiBase永远无法确定必须迁移数据,而不仅仅是drop+create

  • 在一行中:
    grailsdb diff
    生成LiquiBase的
    changelog.xml
    ,并
    grails migrate-Dgrails.env=
    将其应用于相应的数据库服务器


  • 我最近发布了用于数据库迁移的官方Grails插件-请参阅和

    我正在与Liquibase的作者一起研究这一点,因此旧的Liquibase插件现在已被弃用,而新的插件应该被使用,因为它使用了最新版本的Liquibase(2.0),并且得到了SpringSource的官方支持。看看他的公告


    在Grails用户邮件列表(注册地址)或新插件论坛上提出使用问题,或直接向作者发送电子邮件:)

    新的DB插件绝对是最好的选择我现在已经尝试了Burt的DB插件,它更好了-使用它!