Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL中向表添加约束_Mysql_Key_Constraints - Fatal编程技术网

在MySQL中向表添加约束

在MySQL中向表添加约束,mysql,key,constraints,Mysql,Key,Constraints,我正在为剧院创建一个db。它目前只有两个表:节目表和电影表 每个电影都有一个唯一的字符串id(除了自动递增id int NOTNULL之外),我想在shows表中使用它作为外键。它给了我: 错误代码:1215。无法添加外键约束 我的问题是: SET FOREIGN_KEY_CHECKS=0; DROP TABLE movies CASCADE; DROP TABLE shows CASCADE; SET FOREIGN_KEY_CHECKS=1; CREATE TABLE movies (

我正在为剧院创建一个db。它目前只有两个表:节目表和电影表

每个电影都有一个唯一的字符串id(除了自动递增id int NOTNULL之外),我想在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`);

外键必须引用父表中的主键/唯一键。在本例中,您有两列movies\u id和movie\u id,并且您已经将movies\u id定义为主键。但是,您的外键正试图引用movie_id列。在这种情况下,您需要使此列具有唯一性,才能创建外键。

Movie\u id必须是键或键的一部分。