mysql - 添加外键失败
问题描述
我正在尝试创建两个表
CREATE TABLE Submissions
(
quiz_ID INT(2) UNSIGNED,
quiz_duration TIME,
student_ID INT(2) UNSIGNED,
attempt_date date,
PRIMARY KEY (quiz_ID, student_ID)
);
和
CREATE TABLE Students
(
student_ID INT(2) UNSIGNED,
student_name VARCHAR(100),
PRIMARY KEY (student_ID),
FOREIGN KEY (student_ID) REFERENCES Submissions(student_ID)
);
但是,当我尝试创建第二个表时,它给了我一个错误
ERROR 1822 (HY000): 添加外键约束失败。引用表“提交”中的约束“students_ibfk_1”缺少索引
我如何解决它?
解决方案
您的外键顺序错误。submissions
应该有外键约束。所以:
CREATE TABLE Submissions (
quiz_ID INT(2) UNSIGNED,
quiz_duration TIME,
student_ID INT(2) UNSIGNED,
attempt_date date,
PRIMARY KEY (quiz_ID, student_ID),
CONSTRAINT fk_subsmissions_student_id FOREIGN KEY (student_id) REFERENCES students(student_id)
);
当然,Students
需要在定义外键之前创建表。
推荐阅读
- javascript - Async/Await 仅在读取文件时是有效的异步函数
- node.js - 从 heroku CLI 或 github 构建错误。无法部署新内容
- css - 引导表标题颜色仅在单元格悬停时显示
- python - Eclipse PyDev 中自己的包上的 Python ImportError / ModuleNotFoundError
- php - Laravel bootstrap.js 传递一个 flash 消息
- c# - 无法使用 Console.ReadLine() 显示来自用户的输入
- php - PHP - symfony 中的条件
- rust - 尝试收集到向量中,但由于“无法在 <...> 类型的元素上构建集合”而失败
- apache-camel - 在主路由上发送聚合结果,而不是输入消息
- r - 使用 testthat 运行唯一文件中子目录中的所有测试