无法迁移/种子数据库 - Postgres Rails

时间:2014-02-07 22:52:15

标签: ruby-on-rails ruby postgresql ruby-on-rails-4

非常奇怪的问题

我正在尝试迁移我的数据库,但我一直在努力:

PG::UndefinedTable: ERROR:  relation "users" does not exist

这是我的迁移:

class AddRoleToUser < ActiveRecord::Migration
  def up
    add_column :users, :role_id, :integer
  end

  def down
    remove_column :users, :role_id
  end
end

我的架构:

ActiveRecord::Schema.define(version: 20140205191602) do

  # These are extensions that must be enabled in order to support this database
  enable_extension "plpgsql"

  create_table "horseraces", force: true do |t|
    t.integer  "horse_id"
    t.integer  "race_id"
    t.datetime "entered"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  create_table "horses", force: true do |t|
    t.string   "name"
    t.string   "gender"
    t.date     "DOB"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  create_table "races", force: true do |t|
    t.string   "name"
    t.integer  "race_number"
    t.string   "description"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  create_table "roles", force: true do |t|
    t.string   "name"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  create_table "users", force: true do |t|
    t.string   "first_name"
    t.string   "last_name"
    t.string   "user_name"
    t.string   "address"
    t.string   "phone_number"
    t.string   "email",                  default: ""
    t.string   "encrypted_password",     default: "", null: false
    t.string   "reset_password_token"
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.integer  "sign_in_count",          default: 0,  null: false
    t.datetime "current_sign_in_at"
    t.datetime "last_sign_in_at"
    t.string   "current_sign_in_ip"
    t.string   "last_sign_in_ip"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.integer  "role_id"
  end

  add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree
  add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree

end

我一直在努力:

rake db:reset

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

每次我都遇到同样的错误。

有趣的是,这是有效的,这意味着我已经运行了这些命令并使其正常工作。我只是尝试刚开始新鲜,现在它正在抛出这些错误。

值得注意 - 我确实将一个模型文件从users.rb更改为user.rb&amp; roles.rb to role.rb我不知道这是否会影响任何事情。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:4)

您应先加载架构然后再迁移:

rake db:schema:load
rale db:migrate

第一个命令将运行schema.rb文件并创建users表。然后第二个将运行您的迁移,它不应该失败,因为现在users表存在。

答案 1 :(得分:0)

当你回去编辑你的迁移时经常发生这种事情...可能不是你出错的原因 - 但这是我怀疑的第一件事。我最强烈的怀疑是你以某种方式删除了你的“create_users”迁移。