Activerecord Grails中的数据库迁移

Activerecord Grails中的数据库迁移,activerecord,grails,Activerecord,Grails,假设在grails应用程序中有一个包含3个表的数据库: 使用者 活动 朋友 用户表表与活动表和朋友表有一对多关系,因此在用户表中我有: static hasMany = [activies: Activity, friends: Friend] 在朋友和活动方面,我有: static belongsTo User. 该应用程序已部署,并有数千名客户已注册。现在在数据库中进行了更改:表活动被删除。创建了一个位于用户表多个侧面的表日志。用户表添加了一个新列,该列不能为空。删除了友元表中也定义为N

假设在grails应用程序中有一个包含3个表的数据库: 使用者 活动 朋友

用户表表与活动表和朋友表有一对多关系,因此在用户表中我有:

static hasMany = [activies: Activity, friends: Friend]
在朋友和活动方面,我有:

static belongsTo User.
该应用程序已部署,并有数千名客户已注册。现在在数据库中进行了更改:表活动被删除。创建了一个位于用户表多个侧面的表日志。用户表添加了一个新列,该列不能为空。删除了友元表中也定义为NOTNULL的旧列

因此,在上述场景中,假设使用MySQL,在不删除现有客户数据的情况下进行上述更改,并将新表安全地添加到现有客户中,需要做些什么

RubyonRails附带用于数据库迁移的ActiveRecord。Grails是否有类似的现成产品


当前正在开发中,当我在向表中添加新的NOTNULL列后运行grails应用程序时,除非在运行grails应用程序之前删除数据库中的该表,否则将引发get column be null异常。如果不存在该表,grails应用程序将重新创建该表。显然,一旦部署了应用程序,我就没有必要删除该表。

不幸的是,当前版本的Grails没有随数据库迁移而来。但是,有一种方法可以使迁移成为可能

(1.4,计划于2011年第1季度发布)应该包含一个内置的迁移工具,这是我非常期待的


注意:我没有使用过Liquibase插件,所以我没有任何使用它的第一手经验。然而,我已经看到了许多描述其使用的博客文章,如果1.4还没有发布,我可能会在我的下一个Grails项目中使用它。

Grails迁移支持将是一个插件,在1.4之前发布。它基于Liquibase,因此如果您现在开始使用它,那么切换到使用Grails插件将非常简单。