0

私は Play 2.3 を使用しており、PostgreSQL 9.4 の進化によってリレーショナル データベースを生成しようとしています。

conf/evolutions/default/1.sqlスクリプトには次のステートメントがあります。

ALTER TABLE ONLY round
ADD CONSTRAINT round_event_id_fkey FOREIGN KEY (event_id) REFERENCES event(id);

ALTER TABLE ONLY round
ADD CONSTRAINT round_event_id UNIQUE (event_id);

以下は私のイベントテーブルの説明です:

Table "public.event"
            Column             |            Type             |                     Modifiers
-------------------------------+-----------------------------+----------------------------------------------------  id                            | integer                     | not null default nextval('event_id_seq'::regclass)  related_event_hash          | character varying(45)       |  start_time                    | timestamp without time zone |  end_time                      | timestamp without time zone |  name                          | character varying(45)       |  status                        | character varying(45)       | not null  owner_id                      | bigint                      | not null  venue_id                     | bigint                      |  participation_hash            | character varying(45)       |  number_of_participants        | integer |  number_of_backup_participants | integer                     |  created                       | timestamp without time zone | not null updated                       | timestamp without time zone | not null Indexes:
    "event_pkey" PRIMARY KEY, btree (id)
    "index_event_name" btree (name)
    "index_event_status" btree (status)
    "index_start_time" btree (start_time) Foreign-key constraints:
    "event_owner_id_fkey" FOREIGN KEY (owner_id) REFERENCES person(id)
    "event_venue_id_fkey" FOREIGN KEY (venue_id) REFERENCES venue(id) Referenced by:
    TABLE "anonymous_person" CONSTRAINT "anonymous_person_event_id_fkey" FOREIGN KEY (event_id) REFERENCES event(id)
    TABLE "mix_game" CONSTRAINT "mix_game_event_id_fkey" FOREIGN KEY (event_id) REFERENCES event(id)
    TABLE "participant" CONSTRAINT "participant_event_id_fkey" FOREIGN KEY (event_id) REFERENCES event(id)

ブラウザでアプリケーションを起動すると、次のエラーが表示されます。

Database 'default' is in an inconsistent state!

この SQL スクリプトを実行しようとしたときに、次のエラーが発生しました。

ERROR: there is no unique constraint matching given keys for referenced table "round" [ERROR:0, SQLSTATE:42830] 

何が間違っている可能性がありますか?このエラーを修正して外部キー制約を追加するにはどうすればよいですか?

外部キー制約なしで、次のようにデータベース ラウンドを生成することに注意してください。

                                 Table "public.round"


    Column      |         Type          |                     Modifiers
------------------+-----------------------+----------------------------------------------------
 id               | integer               | not null default nextval('round_id_seq'::regclass)
 round_no         | integer               | not null
 event_id         | bigint                | not null
 state            | character varying(20) | not null
 team_composition | character(12)         | not null
 result           | character varying(20) |
 description      | character varying(45) |
 play_time        | integer               | not null
 shift_time       | integer               |
 change_time      | integer               |
Indexes:
    "round_pkey" PRIMARY KEY, btree (id)
    "round_event_id" UNIQUE CONSTRAINT, btree (event_id)
4

1 に答える 1