Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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_Foreign Keys - Fatal编程技术网

Mysql 未实现外键约束

Mysql 未实现外键约束,mysql,foreign-keys,Mysql,Foreign Keys,我正在尝试在以下两个表之间创建外键: 学生: id(主键,非空,唯一,AI) 学生编号(非空,唯一) 。。。(没有约束的其他列) 及 项目: id(主键,非空,唯一,AI) 学生编号(非空) 。。。(没有约束的其他列) 我使用的语法是: ALTER table project ADD CONSTRAINT fk_project_student FOREIGN KEY (student_number) REFERENCES student (student_number) ON DELETE

我正在尝试在以下两个表之间创建外键:

学生:

id(主键,非空,唯一,AI)

学生编号(非空,唯一)

。。。(没有约束的其他列)

项目:

id(主键,非空,唯一,AI)

学生编号(非空)

。。。(没有约束的其他列)

我使用的语法是:

ALTER table project 
ADD CONSTRAINT fk_project_student FOREIGN KEY (student_number) 
REFERENCES student (student_number) ON DELETE CASCADE ON UPDATE CASCADE;
然而,我得到以下信息:

错误1452(23000):无法添加或更新子行:外键约束失败


如果你问,没有团队项目,因此这是一个简单的一对多关系。

你已经有不符合外键约束的记录。通过使用

SELECT project.student_id from project 
LEFT JOIN student ON project.student_number = student.student_number
WHERE student.student_number IS NULL

这表明表中已有与外键约束不兼容的数据。您可以检查此答案。谢谢,这确实是解决问题的方法。表项目中的某些记录引用了表student的不存在值。数据库一开始不是我的,有大量的行。我从来没有想到子表中会有没有父记录的记录,因为数据是从另一个数据库中导出的,并且外键正常工作。很高兴能提供帮助