2017-05-14 70 views
0

我正在爲一個影院創建一個數據庫。目前它只有兩個表格:節目和電影。在MySQL中爲表添加約束條件

每部電影都有(除了自動增量id int不爲空),還有一個唯一的字符串id(也不是null),我想在shows表中使用它作爲外鍵。它給我:

錯誤代碼: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

外鍵必須指向主鍵/唯一鍵表。在你的情況下,你有兩列movies_id和movie_id,並且你已經定義了movies_id作爲主鍵。但是,您的外鍵正在嘗試引用movie_id列。在這種情況下,您需要使該列獨一無二以創建您的外鍵。