OHope
OHope

Reputation: 618

Unable to Migrate/Seed Database - Postgres Rails

Very odd problem

I am trying to migrate my database but I keep getting:

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

Here is my migration:

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

  def down
    remove_column :users, :role_id
  end
end

And my schema:

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

I have been trying:

rake db:reset

and

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

And I get met with the same errors each time.

Interesting that this was working, meaning I had run these commands and got it working. I simply tried to just start fresh and now it's throwing these errors.

Worth noting - I did change a model file from users.rb to user.rb & roles.rb to role.rb I don't know if this would effect anything.

Any help would be much appreciated.

Upvotes: 2

Views: 1181

Answers (2)

Taryn East
Taryn East

Reputation: 27747

This sort of thing often happens when you go back and edit your migrations... might not be exactly what went wrong for you - but it's the first thing that I'd suspect. My strongest suspicion would be that you somehow deleted your "create_users" migration.

Upvotes: 0

DiegoSalazar
DiegoSalazar

Reputation: 13531

You should load the schema first then migrate:

rake db:schema:load
rale db:migrate

The first command will run your schema.rb file and create the users table. The 2nd will then run your migration and it shouldn't fail because now the users table exists.

Upvotes: 4

Related Questions