为啥会显示 MYSQL 错误“无法添加外键约束”? [复制]
Posted
技术标签:
【中文标题】为啥会显示 MYSQL 错误“无法添加外键约束”? [复制]【英文标题】:Why is the MYSQL error "Cannot add foreign key constraint" showing? [duplicate]为什么会显示 MYSQL 错误“无法添加外键约束”? [复制] 【发布时间】:2016-11-21 03:24:27 【问题描述】:我目前正在完成我的 mysql 任务,并且在使用外键时遇到了一个小问题。问题如下:
CREATE TABLE IF NOT EXISTS entries(
student_id INT(10) UNSIGNED NOT NULL,
subject_name INT(10) UNSIGNED NOT NULL,
exam_date VARCHAR(20) NOT NULL,
PRIMARY KEY (exam_date),
FOREIGN KEY (student_id) REFERENCES student (student_id),
FOREIGN KEY (subject_name) REFERENCES subject (subject_name));
输入此代码后,弹出错误 1215 说我无法添加外键约束。错误如下图:
ERROR 1215 (HY000): 无法添加外键约束
我试图链接外键的表是这样的:
CREATE TABLE IF NOT EXISTS subjects(
student_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
subject_name VARCHAR(20) NOT NULL,
level_of_entry VARCHAR(20),
exam_board VARCHAR(40) NOT NULL,
PRIMARY KEY(student_id));
我对这张表没有任何问题,只是想知道如何解决我的困境?
【问题讨论】:
首先创建表student和subject,然后创建entry表。并注意拼写错误 (FOREIGN KEY (subject_name) REFERENCES subject (subject_name));) 在这里您要添加学生并创建表学生。 【参考方案1】:您在一张表中有 subject_name INT(10),在另一张表中有 subject_name VARCHAR(20) 在 MySQL 中创建外键时仔细检查类型。
【讨论】:
谢谢你解决了我的问题。【参考方案2】:entries
表subject_name
的数据类型为int
,而在主题表中subject_name
的数据类型为varchar
。
为了添加外键约束,两种数据类型必须匹配
【讨论】:
所以通过解决这个问题,我只需将代码 subject_name 更改为 subject_id?以上是关于为啥会显示 MYSQL 错误“无法添加外键约束”? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
创建外键时出错:MySQL 错误 1215:无法添加外键约束 [重复]
如何修复此错误 3734:无法在 MySQL WorkBench 上添加外键约束?