我有一个名为movies
的表,其中字段id
为主键,还有两个变量:title
和genre
。
我创建了一个名为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 ...]
答案 0 :(得分:0)
清除表格内容并尝试添加外键。
如果您的表包含与外键字段值不匹配的数据,您将看到此错误...
答案 1 :(得分:0)
看起来您的表movies
在genre列中有数据,而genres.id列中没有该数据。
删除无效数据后,您的陈述应该有效。
希望有所帮助
Vishad