2017-05-14 73 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列。在这种情况下,您需要使该列独一无二以创建您的外键。