Mysql 未实现外键约束
我正在尝试在以下两个表之间创建外键: 学生: id(主键,非空,唯一,AI) 学生编号(非空,唯一) 。。。(没有约束的其他列) 及 项目: id(主键,非空,唯一,AI) 学生编号(非空) 。。。(没有约束的其他列) 我使用的语法是: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
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的不存在值。数据库一开始不是我的,有大量的行。我从来没有想到子表中会有没有父记录的记录,因为数据是从另一个数据库中导出的,并且外键正常工作。很高兴能提供帮助