Grails 数据库迁移插件
Posted
技术标签:
【中文标题】Grails 数据库迁移插件【英文标题】:Grails database migration plugins 【发布时间】:2011-01-07 09:36:42 【问题描述】:至少有两个 Grails 插件可以模拟 Rails 的数据库迁移功能:
Autobase Liquibase对于其中哪一个最好有共识,或者是否有另一个插件比上述任何一个都更好地进行数据库迁移?
【问题讨论】:
【参考方案1】:现在有一个standard Grails database migration plugin 可用。根据this blog post,至少在 liquibase 1.9 版本之后将不再维护 liquibase 插件。
新的数据库迁移插件有built-in functionality在启动时执行更改日志,并支持在Groovy DSL中定义更改,所以它可能就是你要找的。p>
【讨论】:
【参考方案2】:我使用 Autobase(基于 Liquibase 构建),因为它(上次我检查)允许您在应用启动时自动检查/应用您的迁移。使用 Liquibase 插件,我必须自己在 servlet 初始化代码中执行此操作。这允许您将数据源设置为 dbCreate = none
并让 Autobase 处理使 DB 成形。
它确实意味着您每次向域类添加属性时都需要编写迁移,但我认为这是一件好事,因为它让您考虑底层字段实际上应该是什么而不是让 Hibernate 猜测一下。
我认为一些 Autobase 插件(例如 groovy dsl)正在迁移回 Liquibase 插件,但您需要检查一下。
Autobase 的唯一缺点是缺乏良好的文档。有一些,但不完整。幸运的是,dsl 与 xml Liquibase 标签相同,因此您可以处理大部分内容。
【讨论】:
只看 autobase 页面 - 现在已弃用它,取而代之的是 Liquibase 我不认为 liquibase 有能力在你的应用程序启动时更新数据库,这是一个非常好的功能。在迁移成为 Grails 核心的一部分(计划用于 Grails 1.4)之前,我仍然会使用 Autobase @leebutts - 在撰写本文时,dbMigrations 插件(Liquibase 插件的后续版本)确实支持在应用程序启动时更新数据库。【参考方案3】:我使用 liquibase,我不确定 Robert 是否仍在积极维护 Autobase,而 liquibase 提供的 xml 实际上非常类似于 DSL。我认为它还为您的数据库命令提供了一点分离,并且不会使其根深蒂固于启动过程中(有些人可能更喜欢相反)。
【讨论】:
【参考方案4】:至少从 Grails2.0 开始,database migration plugin 是处理重要数据库更改的事实上的方式。该插件基于 Liquibase 构建,由 Springsource 人员编写 - 始终是质量的标志。我写了一个introduction to the database migration plugin,可能对阅读本文的人有用。
【讨论】:
【参考方案5】:我听说 Autobase 仍在维护,但考虑到 Grails 数据库迁移插件是由核心团队编写的,并且可能会成为官方支持的插件。
换句话说,鼓励您在选择上述任一插件之前等待 Grails 1.4 --> roadmap。
【讨论】:
【参考方案6】:是的,我也看到了迁移插件。这很有帮助... http://grails-plugins.github.io/grails-database-migration/
【讨论】:
以上是关于Grails 数据库迁移插件的主要内容,如果未能解决你的问题,请参考以下文章