Grails应用程序将包含以下内容: 1)领域模型具有各种领域和与其他模型的关系。 2)进入引导程序的预先出现的数据(例如角色)。
V1已部署。用户创建更多数据(即数据库中的对象)。
您使用的是V2,它已经更新了域模型,还有更新的数据项(例如新角色)。
如何在不杀死V1数据的情况下部署V2?
引导程序是否再次运行?怎么知道什么时候运行呢?如果是这样,它将覆盖一些现有数据,以及添加新数据。在这种情况下,引导程序中的每个项目是否需要首先检查它是否已存在以避免重复?
架构定义如何更新,以及如何保存数据?
或者人们通过编写单独的SQL脚本来手动更新所有添加新静态数据和更新模式定义?
答案 0 :(得分:1)
正如您对问题的评论所述,这些类型的更改最好通过使用"更新" dbCreate
和database migration plugin中的DataSource.groovy
设置。
除非您将dbCreate
设置为" create-drop"你永远不会破坏你现有的数据。但是,当您更改域模型时,您可能会发现自己超出了Grails可以更新和#34;以及数据库迁移插件的用武之地。
该插件基于liquibase,将管理将更改集应用于您的数据库,确保它们只应用一次(除非您另有说明)。它是一个很棒的插件,值得阅读documentation以充分了解如何使用它。