Ruby on Rails怎么将列添加到现有数据库?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (13)

错误:

SQLite3::SQLException: no such column: ideas.list_id: 
SELECT "ideas".* FROM "ideas"  
WHERE "ideas"."list_id" = 2

但我补充

t.integer :list_id

到我的db迁移文件:

class CreateIdeas < ActiveRecord::Migration
  def change
    create_table :ideas do |t|
      t.string :name
      t.text :description
      t.string :picture

      t.timestamps
    end
    add_foreign_key :ideas, :lists
  end
end

会这样

class CreateIdeas < ActiveRecord::Migration
  def change
    create_table :ideas do |t|
      t.string :name
      t.text :description
      t.string :picture
      t.integer :list_id
      t.timestamps
    end
    add_foreign_key :ideas, :lists
  end
end

然后我打

rake db:migrate

为什么啊?

提问于
用户回答回答于

应该创建新的迁移:

rails generate migration AddListIdColumnToIdeas list_id:integer

Rails将自动生成迁移文件,剩下的唯一工作就是run rake db:migrate...

如果你非得修改旧的迁移文件,运行以下命令:

rake db:drop
rake db:create
rake db:migrate

它将破坏当前数据库,创建一个新数据库并运行所有迁移(其中将包括新列)。

用户回答回答于

如果要向eXist数据库添加新列,则应使用rails generate migration.所以你可以试试rails generate migration add_list_id_to_ideas list_id:integer然后使用rake db:migrate做出这个改变。

扫码关注云+社区