非常奇怪的问题
我正在尝试迁移我的数据库,但我一直在努力:
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我不知道这是否会影响任何事情。
非常感谢任何帮助。
答案 0 :(得分:4)
您应先加载架构然后再迁移:
rake db:schema:load
rale db:migrate
第一个命令将运行schema.rb文件并创建users表。然后第二个将运行您的迁移,它不应该失败,因为现在users表存在。
答案 1 :(得分:0)
当你回去编辑你的迁移时经常发生这种事情...可能不是你出错的原因 - 但这是我怀疑的第一件事。我最强烈的怀疑是你以某种方式删除了你的“create_users”迁移。