2017-07-27 15 views
0

私はherokuで初めてアプリケーションをデプロイしようとしています。私は変なバグに遭遇しています。私が実行しようとするとHerokuのは、DBを熊手:移行、私はこのエラーを参照してください。Herokuデプロイメントに失敗しました

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

PG::UndefinedTable: ERROR: relation "companies" does not exist 
: CREATE TABLE "users" ("id" bigserial primary key, "admin" boolean DEFAULT 'f', "admin_c" boolean DEFAULT 'f', "color" character varying, "initial" character varying, "name" character varying, "surname" character varying, "pseudo" character varying, "step" integer, "company_id" bigint, "email" character varying DEFAULT '' NOT NULL, "encrypted_password" character varying DEFAULT '' NOT NULL, "reset_password_token" character varying, "reset_password_sent_at" timestamp, "remember_created_at" timestamp, "sign_in_count" integer DEFAULT 0 NOT NULL, "current_sign_in_at" timestamp, "last_sign_in_at" timestamp, "current_sign_in_ip" character varying, "last_sign_in_ip" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL, CONSTRAINT "fk_rails_7682a3bdfe" 
FOREIGN KEY ("company_id") 
    REFERENCES "companies" ("id") 
) 

私は千回私のマイグレーションファイルのユーザー&会社を確認しましたが、何も悪いようです。だから私は本当に何をすべきか分からない。私もすべてのデータベースのリセットなどを試してください。 このような場合answerのように。しかし、何も私のために働いていません。誰もこれを前に見たことがありますか?私はこの時点で本当に必死です。

PS:また、pgとsql3の変更を削除しました。

それが問題を発見する

Company_model役立ちますのであれば、私はあなたに私のコードを与える:

class Company < ApplicationRecord 
    has_many :users, dependent: :destroy 
    has_many :groups, dependent: :destroy 
end 

User_model:

class User < ApplicationRecord 
    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

    belongs_to :company, optional: true 

    has_many :users_group, dependent: :destroy 
    has_many :groups, through: :users_group 
    has_many :users_post, dependent: :destroy 
    has_many :posts, through: :users_post 
    has_many :tasks_users, dependent: :destroy 
    has_many :tasks, through: :tasks_users 

    has_many :requests, dependent: :destroy 
    has_many :groupes_admin, dependent: :destroy 
    has_many :posts, dependent: :destroy 
    has_many :comments, dependent: :destroy 
    has_many :tasks, dependent: :destroy 

end 

会社の移行:

class CreateCompanies < ActiveRecord::Migration[5.1] 
    def change 
    create_table :companies do |t| 
     t.string :name 
     t.string :ref 

     t.timestamps 
    end 
    end 
end 

考案の移行:

class DeviseCreateUsers < ActiveRecord::Migration[5.1] 
    def change 
    create_table :users do |t| 
     ## Database authenticatable 
     t.boolean :admin, default: false 
     t.boolean :admin_c, default: false 
     t.string :color 
     t.string :initial 
     t.string :name 
     t.string :surname 
     t.string :pseudo 
     t.integer :step 

     t.references :company, index: true, foreign_key: true 
     t.boolean :admin, default: false 
     t.string :email,    null: false, default: "" 
     t.string :encrypted_password, null: false, default: "" 

     ## Recoverable 
     t.string :reset_password_token 
     t.datetime :reset_password_sent_at 

     ## Rememberable 
     t.datetime :remember_created_at 

     ## Trackable 
     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.timestamps null: false 
    end 

    add_index :users, :email,    unique: true 
    add_index :users, :reset_password_token, unique: true 
    end 
end 

はスキーマ:

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

    create_table "comments", force: :cascade do |t| 
    t.string "content" 
    t.boolean "done" 
    t.integer "post_id" 
    t.integer "user_id" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    t.index ["post_id"], name: "index_comments_on_post_id" 
    t.index ["user_id"], name: "index_comments_on_user_id" 
    end 

    create_table "companies", force: :cascade do |t| 
    t.string "name" 
    t.string "ref" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    end 

    create_table "groupes_admins", force: :cascade do |t| 
    t.integer "user_id" 
    t.integer "group_id" 
    t.index ["group_id"], name: "index_groupes_admins_on_group_id" 
    t.index ["user_id"], name: "index_groupes_admins_on_user_id" 
    end 

    create_table "groups", force: :cascade do |t| 
    t.string "name" 
    t.integer "cat" 
    t.boolean "main" 
    t.boolean "perso" 
    t.integer "effectif", default: 0 
    t.integer "elm", default: 0 
    t.integer "elm_d", default: 0 
    t.integer "date_cat" 
    t.integer "date_id" 
    t.datetime "date" 
    t.integer "company_id" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    t.index ["company_id"], name: "index_groups_on_company_id" 
    end 

    create_table "posts", force: :cascade do |t| 
    t.text "content" 
    t.boolean "attached" 
    t.integer "attached_cat" 
    t.integer "attached_id" 
    t.boolean "done" 
    t.datetime "done_at" 
    t.integer "done_cat" 
    t.integer "donner_id" 
    t.datetime "upd_at" 
    t.integer "upd_cat" 
    t.integer "updater_id" 
    t.string "title" 
    t.date "deadline" 
    t.integer "group_id" 
    t.integer "user_id" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    t.index ["group_id"], name: "index_posts_on_group_id" 
    t.index ["user_id"], name: "index_posts_on_user_id" 
    end 

    create_table "requests", force: :cascade do |t| 
    t.integer "user_id" 
    t.integer "group_id" 
    t.datetime "validate_at" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    t.index ["group_id"], name: "index_requests_on_group_id" 
    t.index ["user_id"], name: "index_requests_on_user_id" 
    end 

    create_table "subtasks", force: :cascade do |t| 
    t.string "title" 
    t.datetime "date" 
    t.boolean "finished" 
    t.datetime "done_at" 
    t.integer "done_id" 
    t.integer "assign_id" 
    t.integer "task_id" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    t.index ["task_id"], name: "index_subtasks_on_task_id" 
    end 

    create_table "tasks", force: :cascade do |t| 
    t.integer "user_id" 
    t.integer "group_id" 
    t.integer "post_id" 
    t.string "title" 
    t.datetime "date" 
    t.boolean "done" 
    t.integer "doner_id" 
    t.datetime "done_at" 
    t.boolean "assigned" 
    t.integer "elm", default: 0 
    t.integer "elm_d", default: 0 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    t.index ["group_id"], name: "index_tasks_on_group_id" 
    t.index ["post_id"], name: "index_tasks_on_post_id" 
    t.index ["user_id"], name: "index_tasks_on_user_id" 
    end 

    create_table "tasks_users", force: :cascade do |t| 
    t.integer "task_id" 
    t.integer "user_id" 
    t.index ["task_id"], name: "index_tasks_users_on_task_id" 
    t.index ["user_id"], name: "index_tasks_users_on_user_id" 
    end 

    create_table "users", force: :cascade do |t| 
    t.boolean "admin", default: false 
    t.boolean "admin_c", default: false 
    t.string "color" 
    t.string "initial" 
    t.string "name" 
    t.string "surname" 
    t.string "pseudo" 
    t.integer "step" 
    t.integer "company_id" 
    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 ["company_id"], name: "index_users_on_company_id" 
    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 

    create_table "users_groups", force: :cascade do |t| 
    t.integer "user_id" 
    t.integer "group_id" 
    t.index ["group_id"], name: "index_users_groups_on_group_id" 
    t.index ["user_id"], name: "index_users_groups_on_user_id" 
    end 

    create_table "users_posts", force: :cascade do |t| 
    t.integer "post_id" 
    t.integer "user_id" 
    t.index ["post_id"], name: "index_users_posts_on_post_id" 
    t.index ["user_id"], name: "index_users_posts_on_user_id" 
    end 

end 
+1

私は英雄に同じです、私はホストを変更しなければなりません –

+1

2つの質問。あなたの 'ユーザーの移行の前にあなたの'企業 'の移行ですか? 'rake db:schema:load'を試してみましたか?あなたのコメント@mのために –

+0

ありがとう。サイモンボルグ、私はその点については分かりませんでした。私はdeviseが実装されたテンプレートを作成しました。私が前に他のモデルを持っているのは初めてです。私は移行ファイルの順序を変更し、あなたが言ったようにdb:schema:loadを実行しました。そして、それははるかに良いです。あなたのアドバイスをありがとう。良い継続 –

答えて

-1

rake db:createで最初のデータベースを作成します。

+0

私も試してみますが、私にこのエラーを表示しています DETAIL:ユーザーにCONNECT権限がありません。 –

+0

Herokuでデータベースを作成する必要はありません。コマンド 'rake db:create'、' rake db:drop'、 'rake db:reset'はHerokuプラットフォームでは動作しません –

0

companiesのテーブルをusersテーブルに作成しようとしていますが、companiesテーブルがまだ存在しないことを示すエラーメッセージが表示されます。 の前にcompaniesが作成されていることを確認してください。 heroku run rake db:schema:loadを使用して、一度に1つずつマイグレーションするのではなく、スキーマを一度にロードするだけでも構いません。

免責事項:rake db:schema:loadはすべてのデータを消去します。新しいデータベースを設定するのに最適です。重要なデータがすでに含まれている運用データベースに対しては、絶対に実行しないでください。データを取得したら、増分マイグレーションを行う必要があります。

関連する問題