2017-03-09 108 views
0

我的應用程序完美的作品在發展,但是當我嘗試爲它服務在Heroku上,我得到以下錯誤:不能運行的Heroku耙分貝:遷移

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") 
) 

當我嘗試運行出現該錯誤heroku rake db:drop, heroku rake db:reset, heroku rake db:migrate

這是我的DB模式:

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 

這是我的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) 

該項目與軌道4以後創建並更新到軌5

哪能遷移我的數據庫在Heroku?

感謝您的閱讀。

+1

你試過跑'Heroku的耙分貝:模式:load'直接加載在Heroku您的架構? – Iceman

+1

heroku rake db:schema:load,Worked correctly;任何可能發生的事情的想法? @Iceman –

+0

Goo,d我給出瞭解釋的答案。 – Iceman

回答

3

這樣做的推薦的方法是運行

heroku rake db:schema:load 

,因爲它從你的開發數據庫對生產服務器加載工作模式。使用遷移不推薦,這是從官方指南

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

+1

感謝您的幫助! –

+0

其實,我想你想'heroku運行rake db:schema:load'。我相信'heroku rake'語法已被棄用。 – moveson

相關問題