rails-migrations - 在 Rails 2中,更改架构

  显示原文与译文双语对照的内容
0 0

我需要在架构中的表中添加一些列。 谁能告诉我最好的方法?

由于 schema.rb 文件没有更新以包含新列并且所有相应的视图文件( 编辑,索引,新建,显示) 不更新新列,因这里似乎不完整。 更不用说那些被生成的迁移类的膨胀了。 谢谢


ruby script/generate migration RecordLabelToAlbums record_label:string
 exists db/migrate
 create db/migrate/20121130125859_record_label_to_albums.rb

创建这里选项:


class RecordLabelToAlbums <ActiveRecord::Migration
def self.up
end

def self.down
 end
end

然后我添加了:


class RecordLabelToAlbums <ActiveRecord::Migration
def self.up
 add_column :albums, :record_label, :text
end

def self.down
 remove_column :albums, :record_label
end

end

我运行了:

 
rake db:migrate

 

获取:Mysql::Error: 表'相册'已经存在: CREATE albums ( id int(11) 默认为空auto_increment主键,created_at 日期时间,updated_at datetime )

时间: 原作者:

0 0

你添加的代码是正确的。

这个错误表明,由于某些原因,系统似乎认为它还没有运行创建相册表的原始迁移。 如果 confused ( 在 Rails 2中) confused迁移的状态在数据库中的表中指定,那么它会被 confused,然后尝试运行迁移 migrations 。 我不确定有什么可以能会引起混淆,但是我回忆了在 2008年使用 Rails 2. x. 时发生了几次。

表格是简单的--,你可以看到它从SQL提示符--中看到了它所运行的迁移名称。

如果你不介意丢失一些数据,你可以尝试 rake db:rollback 甚至 rake db:reset 返回到开始。 rake db:rollback STEP=2 将回滚最后 2个迁移。

如果需要数据,通过添加一个或者多个引用 app/db/migrations 中迁移的新记录来更正表的内容。 顺序很重要,我想( 格式在 Rails 3中改变了一点,我不记得) 。

任何时候都要添加或者更改数据库架构,使用 Rails 生成迁移,然后运行 rake db:migrate

问:有什么方法可以移动到 Rails 3 。 它已经出了好几年了 Rails 4即将来。 如果不接受命中和升级,你将在不兼容。deprecations 。安全性和性能问题中发现自己。

原作者:
...