私はusersテーブルを作成し、それをHerokuに移行して正常に動作しました。私は管理テーブルを追加しようとしましたが、何かがうまくいかず、何が起こったのか分かりません。ユーザーと管理者のテーブルの両方が私の地元の環境で正常に動作しているが、私はHerokuのへの移行をプッシュするとき、私は、ユーザー表がすでに作成されたエラーが表示されます。Heroku上の重複テーブルエラー - テーブルは既に存在しますが、移行はローカルで動作します -
Migrating to DeviseCreateUsers (20151119150443) == 20151119150443 DeviseCreateUsers: migrating ================================ -- create_table(:users) PG::DuplicateTable: ERROR: relation "users" already exists : CREATE TABLE "users" ("id" serial primary key, "email" character varying(255) DEFAULT '' NOT NULL, "encrypted_password" character varying(255) DEFAULT '' NOT NULL, "reset_password_token" character varying(255), "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(255), "last_sign_in_ip" character varying(255), "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) rake aborted! StandardError: An error has occurred, this and all later migrations canceled:
PG::DuplicateTable: ERROR: relation "users" already exists : CREATE TABLE "users" ("id" serial primary key, "email" character varying(255) DEFAULT '' NOT NULL, "encrypted_password" character varying(255) DEFAULT '' NOT NULL, "reset_password_token" character varying(255), "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(255), "last_sign_in_ip" character varying(255), "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) /app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.1.8/lib/active_record/connection_adapters/postgresql/database_statements.rb:128:in `async_exec'
これは私が状況を確認したときに言っているものです
Status Migration ID Migration Name
--------------------------------------------------
up 20151030033303 ********** NO FILE **********
up 20151102165952 ********** NO FILE **********
up 20151102170119 ********** NO FILE **********
up 20151103020350 Create restaurants
up 20151103160832 ********** NO FILE **********
up 20151103170143 ********** NO FILE **********
up 20151105172014 ********** NO FILE **********
up 20151114043509 ********** NO FILE **********
down 20151119150443 Devise create users
down 20160809004949 Devise create admins
私はHerokuのに入ることは、ユーザーがTABLので、私は2人のユーザーがいると言うコンソール:Herokuの上のマイグレーションの
Status Migration ID Migration Name
--------------------------------------------------
up 20151103020350 Create restaurants
up 20151119150443 Devise create users
up 20160809004949 Devise create admins
ステータス:ローカル移行のeは移行されましたが、移行ステータスはそれを停止状態として示しています。
私はusersテーブルからデータを失っても構いませんが、実際にはレストランテーブルからデータを失いたくないです。これを修正する方法がわかりません。
Deviseがユーザーテーブルを作成します。 Deviseが独自に作成するものの上にアプリケーションが必要とする列を追加するだけです。この場合、実際にDeviseが作成したテーブルを作成しようとしています。 – MarsAtomic
@MarsAtomic - 私はユーザーテーブルを作成するためにDeviseを使いました。管理テーブルを追加しようとしましたが、移行を実行したにもかかわらず何らかの理由でユーザーの移行が表示されているため、機能しません。私はなぜこれが起こったのか、どのように私のデータのすべてを失うことなくそれを修正するのか分かりません。 –
重要なのは、 'rails g devise user'以外のUsersテーブル* other *を作成するためのマイグレーションを行うべきではないということです。 usersテーブルに追加する追加のフィールドがある場合は、 'rails g migration AddWhateverToUsers'の後に' rails g devise admin'を付けてDeviseを管理者に追加します。投稿した移行に応じてusersテーブルを2回作成しようとしているようです。 Devise [documentation](https://github.com/plataformatec/devise)をご覧ください。 – MarsAtomic