gpt4 book ai didi

mysql - 使用外键创建 mysql 表时出错

转载 作者:行者123 更新时间:2023-11-29 11:09:32 25 4
gpt4 key购买 nike

在提出这个问题之前,我已经进行了彻底的研究,包括在这个网站上。

我有一个学生表:

CREATE TABLE IF NOT EXISTS students(
student_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
first_name VARCHAR(20) NOT NULL,
middle_name VARCHAR(20),
last_name VARCHAR(40) NOT NULL,
email VARCHAR(60) NOT NULL,
password CHAR(40) NOT NULL,
reg_date DATETIME NOT NULL,
PRIMARY KEY (student_id),
UNIQUE (email));

我还有一个主题表:

CREATE TABLE IF NOT EXISTS subjects(
subject_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
subject_name VARCHAR(40) NOT NULL,
level_of_entry VARCHAR(20) NOT NULL,
exam_board VARCHAR(20) NOT NULL,
PRIMARY KEY (subject_id));

我现在正在创建一个表格来链接上述表格:

CREATE TABLE IF NOT EXISTS entries(
exam_date DATETIME NOT NULL,
FOREIGN KEY (student_id) REFERENCES students (student_id),
FOREIGN KEY (subject_id) REFERENCES subjects (subject_id)
);

我的问题是,当我尝试在名为条目的第三个表中声明外键时,收到一条错误,指出 subject_id 外键不在引用的表中。错误 1072 (42000):表中不存在键列“student_id”,即使它明确包含在学生表中,并且这同样适用于“subject_id”和主题表。我确信我声明外键的语法是正确的,所以我不确定如何解决问题。感谢所有帮助。谢谢。

最佳答案

在应用外键约束之前,您忘记创建这两列:

CREATE TABLE IF NOT EXISTS entries(
exam_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
student_id INT UNSIGNED NOT NULL,
subject_id INT UNSIGNED NOT NULL,
exam_date DATETIME NOT NULL,
PRIMARY KEY (exam_id),
FOREIGN KEY (student_id) REFERENCES students (student_id),
FOREIGN KEY (subject_id) REFERENCES subjects (subject_id)
);

编辑:

我建议您在每个表中添加一个唯一的 ID 列(此处:exam_id)。

关于mysql - 使用外键创建 mysql 表时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40848472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com