MySQL 数据库。无法添加外键[重复]

Posted

技术标签:

【中文标题】MySQL 数据库。无法添加外键[重复]【英文标题】:MySQL database. can't add foreign key [duplicate] 【发布时间】:2014-04-02 15:41:24 【问题描述】:

我有两张桌子电影和电影院。在cinema 表中,有一个名为cinema_id 的主键。我正在尝试使电影表中的这个主键成为电影表中的外键。 所以我用了

alter table movies
add foreign key(cinema_id)
references cinema(cinema_id)

但我收到一条错误消息:

#1072 - 表中不存在键列“cinema_id”

所以我添加了一列,然后尝试再次创建外键,但出现错误消息:

#1452 - 无法添加或更新子行:外键约束失败

我已经检查了列类型,并且是相同的。有人可以帮我吗?我不知道该怎么办。

【问题讨论】:

在添加 FK 时,您必须检查所有数据是否通过其约束。在查询前使用SET foreign_key_checks = 0;,如果要强制,请在其后设置为 1。 @TomaszKowalczyk 我不明白什么 SET foreign_key_checks = 0;会做吗? 我不想失礼,但谷歌已经停止工作了吗? 【参考方案1】:

您使用了错误的语法。您必须创建一个约束,而不是简单地添加一个外键.. 试试这个:

ALTER TABLE MOVIES ADD CONSTRAINT MOVIES_CINEMA_FK
FOREIGN KEY (CINEMA_ID) 
REFERENCES CINEMA(CINEMA_ID);

mysql Documentation

【讨论】:

嗨,我试过了,但它仍然给了我同样的错误 movies表中有记录吗?如果是,您必须确保这些值也在表中cinema 我在电影表和电影表中都有虚拟数据。所以电影表中的列也必须在电影表中? 是的.. movies.cinema_id 的每个值都必须在 cinema.cinema_id 中,否则您将违反约束。 好的,你是说电影表中的所有列也必须在电影院表中?

以上是关于MySQL 数据库。无法添加外键[重复]的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 错误 [1215] [HY000] - 无法添加外键 [重复]

创建外键时出错:MySQL 错误 1215:无法添加外键约束 [重复]

MySQL - #1215 - 无法添加外键约束

MySQL 无法添加外键约束

使用 Alter Table 和现有 MYSQL 数据库添加外键时出现问题 - 无法添加!帮助!

MySQL数据库的Laravel迁移“无法添加外键约束”错误