添加外键时出错

时间:2014-04-02 11:56:45

标签: mysql sql database mysql-workbench

我有一个名为movies的表,其中字段id为主键,还有两个变量:titlegenre

我创建了一个名为genres的新表,其中int字段id为主键,desription为varchar。我更改了genre表中的字段movies,因此我可以创建引用类型的外键。

但是,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 ...]

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

看起来您的表movies在genre列中有数据,而genres.id列中没有该数据。

删除无效数据后,您的陈述应该有效。

希望有所帮助

Vishad