2016-05-30 4 views
0

Ich habe Probleme beim Migrieren meiner Datenbank zu Heroku. Ich habe die anderen Punkte überprüft, die dies ohne Erfolg ansprechen. Ich kann wirklich ein zweites Paar Augen auf meinen Code verwenden, um mir dabei zu helfen, dies herauszufinden.RoR: Datenbank kann nicht zu Heroku migriert werden

Dies ist der Fehler, den ich bekommen:

rake aborted! 
StandardError: An error has occurred, this and all later migrations canceled: 

PG::UndefinedTable: ERROR: relation "props" does not exist 
: ALTER TABLE "comments" ADD CONSTRAINT "fk_rails_1d3f70cf04" 
FOREIGN KEY ("prop_id") 
    REFERENCES "props" ("id") 

enter image description here

Es scheint, erwischt zu werden, während diese Datei migrieren:

class CreateComments < ActiveRecord::Migration 
    def change 
    create_table :comments do |t| 
     t.string :commenter 
     t.text :body 
     t.references :prop, index: true, foreign_key: true 

     t.timestamps null: false 
    end 
    end 
end 

Dies ist die Migrationsdatei ist, wo ich die Tabelle erstellen Requisiten:

class CreateProps < ActiveRecord::Migration 
    def change 
    create_table :props do |t| 
     t.string :title 
     t.text :text 
     t.references :user, index: true, foreign_key: true 

     t.timestamps null: false 
    end 
    end 
end 

Mein Schema ist hier:

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

    # These are extensions that must be enabled in order to support this database 
    enable_extension "plpgsql" 

    create_table "answers", force: :cascade do |t| 
    t.string "choice" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    t.string "created_by" 
    t.integer "user_id" 
    t.integer "prop_id" 
    end 

    create_table "comments", force: :cascade do |t| 
    t.string "commenter" 
    t.text  "body" 
    t.integer "prop_id" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    end 

    add_index "comments", ["prop_id"], name: "index_comments_on_prop_id", using: :btree 

    create_table "props", force: :cascade do |t| 
    t.string "title" 
    t.text  "text" 
    t.integer "user_id" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    t.string "choice" 
    t.string "answer" 
    t.integer "answerId" 
    end 

    add_index "props", ["user_id"], name: "index_props_on_user_id", using: :btree 

    create_table "user_answers", force: :cascade do |t| 
    t.integer "user_id" 
    t.integer "answer_id" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 

    create_table "users", force: :cascade do |t| 
    t.string "username" 
    t.string "email" 
    t.integer "score",   default: 0 
    t.integer "prop_id" 
    t.datetime "created_at",      null: false 
    t.datetime "updated_at",      null: false 
    t.string "password_digest" 
    t.string "created_by" 
    t.boolean "admin",   default: false 
    t.integer "answers_id" 
    t.integer "answer_id" 
    end 

    add_index "users", ["answer_id"], name: "index_users_on_answer_id", using: :btree 
    add_index "users", ["prop_id"], name: "index_users_on_prop_id", using: :btree 

    create_table "wins", force: :cascade do |t| 
    t.string "correctAnswer" 
    t.integer "user_id" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    end 

    add_index "wins", ["user_id"], name: "index_wins_on_user_id", using: :btree 

    add_foreign_key "users", "answers" 
end 
+0

Abgesehen von dem, was gesagt bkunzi01, versuchen, das Problem durch migrat zu beheben Ion. Denn sobald Sie db: drop ausführen, gehen alle Daten verloren. Wenn so etwas in der Produktion wieder passiert, können Sie es sich nicht leisten, die Daten zu verlieren. – gates

Antwort

1

Das Problem ist, dass Sie einen Verweis auf eine Tabelle erstellen, die noch nicht erstellt. Entfernen Sie den Verweis aus dieser Migration auf Props, fügen Sie dann die Props-Tabelle hinzu und fügen Sie eine Migration hinzu, die die Verknüpfung implementiert. Wenn Sie die Daten nicht brauchen, sich in der db würde ich ein tun "rake db: drop" und die Migrationsdateien bearbeiten

Update (nur, wenn Sie mit anderen Arent zusammen!):

Do Schienen g Migration add_ref_to_comments

dann die Migration bearbeiten hat:

def add_reference ändern: Requisiten,: Kommentar, Index: true Ende

+0

Danke! Kannst du mir bitte zeigen/sagen, wie die neue Migration aussehen würde, um den Verein neu zu implementieren? Ich bin mir nicht sicher, wie ich die Assoziation genau wiederherstellen soll. – CodeYogi

+0

Sicher ein sec im auf meinem Telefon lol – bkunzi01

+0

Danke ... Ich habe versucht, ein paar Zeilen aus dem Code einschließlich der Zuordnung aus meinem Schema und aus der Migrationsdatei entfernen und es hat immer noch nicht funktioniert? – CodeYogi

Verwandte Themen