Sebastian Delgado
Sebastian Delgado

Reputation: 725

Can't run heroku rake db:migrate

My application works perfectly on development, but when i try to serve it on Heroku, i get the following error:

PG::UndefinedTable: ERROR:  relation "users" does not exist
: CREATE TABLE "games" ("id" serial primary key, "title" character varying, "image" character varying, "description" character varying, "user_id" integer, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL, CONSTRAINT "fk_rails_de9e6ea7f7"
FOREIGN KEY ("user_id")
  REFERENCES "users" ("id")
)

That error appears when i try to run heroku rake db:drop, heroku rake db:reset, heroku rake db:migrate.

this is my DB schema:

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

  create_table "comments", force: :cascade do |t|
    t.string   "body"
    t.integer  "user_id"
    t.integer  "game_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["game_id"], name: "index_comments_on_game_id"
    t.index ["user_id"], name: "index_comments_on_user_id"
  end

  create_table "games", force: :cascade do |t|
    t.string   "title"
    t.string   "image"
    t.string   "description"
    t.integer  "user_id"
    t.datetime "created_at",         null: false
    t.datetime "updated_at",         null: false
    t.string   "image_file_name"
    t.string   "image_content_type"
    t.integer  "image_file_size"
    t.datetime "image_updated_at"
    t.index ["user_id"], name: "index_games_on_user_id"
  end

  create_table "users", force: :cascade do |t|
    t.string   "email",                  default: "", null: false
    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",                          null: false
    t.datetime "updated_at",                          null: false
    t.index ["email"], name: "index_users_on_email", unique: true
    t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
  end

end

This is my env:

Rails version             5.0.2
Ruby version              2.3.1-p112 (x86_64-linux-gnu)
RubyGems version          2.5.1
Rack version              2.0.1
JavaScript Runtime        Node.js (V8)

This project was created with rails 4 and later updated to rails 5.

How can i migrate my db in Heroku ?

Thanks for reading.

Upvotes: 0

Views: 359

Answers (1)

Eyeslandic
Eyeslandic

Reputation: 14900

The recommended way of doing this is to run

heroku rake db:schema:load

as it loads the working schema from your development database unto your production server. Using migrations is not recommended, this is from the official guides

Migrations, mighty as they may be, are not the authoritative source for your database schema. That role falls to either db/schema.rb or an SQL file which Active Record generates by examining the database. They are not designed to be edited, they just represent the current state of the database.

http://edgeguides.rubyonrails.org/active_record_migrations.html#schema-dumping-and-you

Upvotes: 3

Related Questions