Grails schema-export在生成DDL以创建特定数据库的数据库模式方面做得很好。但是,我想要做的是,grails只输出DDL以更新已经创建的模式,而不是从头开始创建它的DDL。
我认为它应该是可能的,因为如果您在数据源中具体说明dbCreate = "update"
,Grails确实能够实际更新模式。
但我只是希望grails吐出它会运行的内容,而不是实际执行它,所以我可以通过SQL工具以受控方式执行它。
答案 0 :(得分:5)
正如@GreyBeardedGeek在评论中指出的那样,Database Migration Plugin(现在默认包含)可以生成您正在寻找的“模式差异”,并且它比香草{{ 1}}确实如此,因为Grails的本机数据库更新仅依赖于Hibernate提供的内容,并且它可以在更新中非常保守。
特别是,您正在寻找的数据库迁移插件的一部分是dbm-update-sql
脚本,它将为您提供运行以将数据库更新为当前架构版本的SQL。
一般情况下,我会强烈建议使用像数据库迁移插件这样的工具,因为它将您的数据库架构与您的应用程序代码捆绑在一起,您可以轻松地将它们一起发布,并且它还包括很多工具,以便运行更新不那么痛苦,并允许回滚和自定义脚本按需要按摩。