2

我有一个带有列(名称,路径)的数据库。现在我有一个迁移文件,将列更改为(名称、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
4

1 回答 1

9

rake db:migrate db:reset 和 db:schema:load 之间的区别很好地解释了各种rake db:*命令的作用。

因为rake db:reset执行 a db:schema:load,它会从您的表中加载旧列,而不是调用db:migrate,这就是您的迁移未运行的原因。

考虑编写更改这些列名称的迁移,而不是重新创建现有表,或手动运行rake db:drop; rake db:create db:migrate

于 2013-11-05T22:55:38.527 回答