2016-07-20 90 views
0

简而言之,我有一个与Devise的Rails API,我想将它部署到Heroku,以便我可以在React应用程序中使用json文件。当我尝试将其迁移到Heroku时,它给了我错误:部署到Heroku PG :: DuplicateColumn:错误:

“PG :: DuplicateColumn:ERROR:关系”评论“的列”user_id“已存在 :ALTER TABLE”reviews“ADD”user_id“整数“

有人告诉我删除迁移文件,因为不知何故Devise已经使他们和迁移文件将使他们双?无论如何,这并没有帮助。

我不知道,如果你需要它,但是这是我的架构文件看起来像:

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

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

    create_table "games", force: :cascade do |t| 
    t.string "title" 
    t.text "description" 
    t.integer "review_id" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    end 

    add_index "games", ["review_id"], name: "index_games_on_review_id", using: :btree 

    create_table "reviews", force: :cascade do |t| 
    t.integer "rating" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    t.integer "user_id" 
    t.integer "game_id" 
    end 

    add_index "reviews", ["game_id"], name: "index_reviews_on_game_id", using: :btree 
    add_index "reviews", ["user_id"], name: "index_reviews_on_user_id", using: :btree 

    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.inet  "current_sign_in_ip" 
    t.inet  "last_sign_in_ip" 
    t.datetime "created_at",          null: false 
    t.datetime "updated_at",          null: false 
    t.string "authentication_token", limit: 30 
    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 

    add_foreign_key "games", "reviews" 
    add_foreign_key "reviews", "games" 
    add_foreign_key "reviews", "users" 
end 
+0

好像你有一个迁移到审查表中添加USER_ID –

+0

是较早它给了我一个错误,它找不到USER_ID,和我做了一个迁移用户添加到审查,因为审查属于给用户。那时它确实解决了这个问题,但这不是正确的方法吗? – Jakeroo

回答

1

是我的猜测是的迁移是重复的,因此运行两次,这引发错误,因为索引列已经存在。

您不能使用迁移文件来达到您的数据库模式终点,而是通过运行类似的代替;

heroku run rake db:schema:load 

看看是否有效。

虽然 - 这有点奇怪;

add_foreign_key "reviews", "users" 

您是否通过迁移添加了此项?我通常不会为关系做这件事,下面就足够了。看看你是否可以删除add_foreign,因为索引在我看来是足够的(可能是错的抱歉)。

add_index "reviews", ["user_id"]