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 数据库迁移插件的主要内容,如果未能解决你的问题,请参考以下文章

Grails 数据库迁移插件问题

grails4中的数据库迁移插件错误

Grails 3 数据库迁移插件初始化错误

Grails 2.3 数据库迁移上的“加载插件管理器时出错:TomcatGrailsPlugin”

已部署服务器上的 Grails 数据库迁移

Grails 数据库迁移插件静默无法添加非空约束