我有一个带有列(名称,路径)的数据库。现在我有一个迁移文件,可以将列更改为(name,pathorig,pathjson,scramble)。
执行rake db:reset
和rake db:migrate
不会更新表格。为什么会发生这种情况?
我的迁移文件:
class CreateUploads < ActiveRecord::Migration
def change
create_table :uploads do |t|
t.string :name
t.string :pathorig
t.string :pathjson
t.string :scramble
t.timestamps
end
end
end
schema.rb文件:
ActiveRecord::Schema.define(version: 20131029072745) do
create_table "uploads", force: true do |t|
t.string "name"
t.string "path"
t.datetime "created_at"
t.datetime "updated_at"
end
end
答案 0 :(得分:8)
Difference between rake db:migrate db:reset and db:schema:load对各种rake db:*
命令的作用有很好的解释。
由于rake db:reset
执行db:schema:load
,它会从您的表中加载旧列,而不是调用db:migrate
,这就是您的迁移未运行的原因。
考虑编写一个更改这些列名称的迁移,而不是重新创建现有表,或者手动运行rake db:drop; rake db:create db:migrate