2017-05-14 17 views
0

私は劇場用のデータベースを作成しています。現在のところ、番組と映画の2つのテーブルしかありません。MySQLのテーブルへの制約の追加

各ムービーは、(自動インクリメントID intがnullでない)、showテーブル内で外部キーとして使用したいユニークな文字列ID(nullでもない)を持っています。その私に与える:

エラーコード:1215は、外部キー制約を追加することはできません

ここでは私のクエリです:

SET FOREIGN_KEY_CHECKS=0; 

DROP TABLE movies CASCADE; 
DROP TABLE shows CASCADE; 
SET FOREIGN_KEY_CHECKS=1; 

CREATE TABLE movies (
    `movies_id` INT auto_increment, 
    `movie_id` VARCHAR(18) NOT NULL, 
    `title` VARCHAR(100), 
    `original_title` VARCHAR(100), 
    `punchline` VARCHAR(250), 
    `genre` VARCHAR(60), 
    `year` INT, 
    `duration` INT, 
    `url` VARCHAR(150), 
    `poster` VARCHAR(150), 
    `director` VARCHAR(45), 
    `producer` VARCHAR(45), 
    `writer` VARCHAR(100), 
    `cast` VARCHAR(500), 
    `distributor` VARCHAR(45), 
    `language` VARCHAR(45), 
    `country` VARCHAR(100), 
    `localization` VARCHAR(45), 
    `plot_outline` VARCHAR(800), 
    `sum_of_scores` DOUBLE, 
    `num_of_scores` DOUBLE, 
    PRIMARY KEY (`movies_id`)); 

    CREATE TABLE shows (
    `shows_id` INT auto_increment, 
    `show_id` VARCHAR(18), 
    `date` DATE, 
    `time` DATETIME, 
    `city` VARCHAR(45), 
    `center` VARCHAR(45), 
    `theater` VARCHAR(45), 
    `movies_movie_id` VARCHAR(18), 
    PRIMARY KEY (`shows_id`)); 

ALTER TABLE shows 
ADD CONSTRAINT fk_shows_movies FOREIGN KEY 
(`movies_movie_id`) REFERENCES movies(`movie_id`); 
+0

Movie_idは、キーまたはキーの一部である必要があります。 –

答えて

0

外部キーは、親のプライマリキー/一意のキーを参照する必要があります表。あなたの場合、movie_idとmovie_idという2つの列があり、movies_idを主キーとして定義しています。しかし、あなたの外部キーはmovie_id列を参照しようとしています。この状況で外部キーを作成するには、この列を一意にする必要があります。

関連する問題