Reputation: 725
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
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