Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.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_Sql_Database_Mysql Workbench - Fatal编程技术网

Mysql 添加外键时出错

Mysql 添加外键时出错,mysql,sql,database,mysql-workbench,Mysql,Sql,Database,Mysql Workbench,我有一个名为movies的表,其中id字段作为主键,还有两个varchar:title和genre 我创建了一个名为genres的新表,其中int字段id作为主键,而desriptionvarchar。我更改了我的电影表中的类型字段,以便可以创建引用类型的外键 然而,Mysql Workbench说在创建外键时出现了一个错误 声明如下: ALTER TABLE `managemovies`.`movies` ADD CONSTRAINT `genre_reference` FOREIG

我有一个名为
movies
的表,其中
id
字段作为主键,还有两个varchar:
title
genre

我创建了一个名为
genres
的新表,其中int字段
id
作为主键,而
desription
varchar。我更改了我的
电影
表中的
类型
字段,以便可以创建引用类型的外键

然而,Mysql Workbench说在创建外键时出现了一个错误

声明如下:

ALTER TABLE `managemovies`.`movies` 
  ADD CONSTRAINT `genre_reference`
  FOREIGN KEY (`genre` )
  REFERENCES `managemovies`.`genres` (`id` )
  ON DELETE NO ACTION
  ON UPDATE NO ACTION
, ADD INDEX `genre_reference_idx` (`genero` ASC) ;
错误:

ERROR 1452: Cannot add or update a child row: a foreign key constraint fails  (`managemovies`.`#sql-3ba_2b`, CONSTRAINT `genre_reference` FOREIGN KEY (`genre`) REFERENCES `genres` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION)
SQL语句:[…与上述语句相同…] 错误:运行故障回复脚本时出错。详情如下

ERROR 1046: No database selected
SQL Statement:
CREATE TABLE `movies` [...]

[... the errors above repeated again ...]

清除表内容并尝试添加外键


如果您的表包含与外键字段值不匹配的数据,您将看到此错误…

看起来您的表
movies
的流派列中包含的数据在genres.id列中不存在

删除无效数据后,您的语句应能正常工作

希望能有帮助


Vishad

您的子表可能有数据。从子表中删除数据,然后添加外键。