rake db:migrate不会更改表

时间:2013-11-05 22:48:53

标签: ruby-on-rails ruby rake dbmigrate

我有一个带有列(名称,路径)的数据库。现在我有一个迁移文件,可以将列更改为(name,pathorig,pathjson,scramble)。

执行rake db:resetrake 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

1 个答案:

答案 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