我收到错误代码1005,这意味着我的外键有问题吗?谁能向我解释!
CREATE SCHEMA test;
Use test;
CREATE TABLE student
(
stud_id INT(7) NOT NULL ,
stud_name VARCHAR(30) NOT NULL ,
PRIMARY KEY (stud_id)
);
CREATE TABLE subject
(
subj_code VARCHAR(7) NOT NULL ,
PRIMARY KEY (subj_code)
);
CREATE TABLE grade
(
stud_id INT(7) NOT NULL ,
subj_code VARCHAR(7) NOT NULL ,
semester INT(1) NOT NULL ,
year YEAR(4) NOT NULL ,
grade VARCHAR(4) NOT NULL ,
PRIMARY KEY (stud_id, subj_code, semester, year) ,
FOREIGN KEY (stud_id) REFERENCES student(student_id)
);
CREATE TABLE subj_enrolment
(
stud_id INT(7) NOT NULL ,
subj_code VARCHAR(7) NOT NULL ,
semester INT(1) NOT NULL ,
year YEAR(4) NOT NULL ,
comment VARCHAR(300) ,
PRIMARY KEY (stud_id, subj_code, semester, year) ,
FOREIGN KEY (stud_id) REFERENCES student(student_id) ,
FOREIGN KEY (subj_code) REFERENCES subject(subject_code)
);
任何帮助是极大的赞赏!
最佳答案
您为引用使用了错误的列名student_id不是学生表中的列名,它必须是stud_id。 subject_code也是如此。我已更正它们并在下面发布。
CREATE SCHEMA test;
Use test;
CREATE TABLE student
(
stud_id INT(7) NOT NULL ,
stud_name VARCHAR(30) NOT NULL ,
PRIMARY KEY (stud_id)
);
CREATE TABLE subject
(
subj_code VARCHAR(7) NOT NULL ,
PRIMARY KEY (subj_code)
);
CREATE TABLE grade
(
stud_id INT(7) NOT NULL ,
subj_code VARCHAR(7) NOT NULL ,
semester INT(1) NOT NULL ,
year YEAR(4) NOT NULL ,
grade VARCHAR(4) NOT NULL ,
PRIMARY KEY (stud_id, subj_code, semester, year) ,
FOREIGN KEY (stud_id) REFERENCES student(stud_id )
);
CREATE TABLE subj_enrolment
(
stud_id INT(7) NOT NULL ,
subj_code VARCHAR(7) NOT NULL ,
semester INT(1) NOT NULL ,
year YEAR(4) NOT NULL ,
comment VARCHAR(300) ,
PRIMARY KEY (stud_id, subj_code, semester, year) ,
FOREIGN KEY (stud_id) REFERENCES student(student_id) ,
FOREIGN KEY (subj_code) REFERENCES subject(subj_code )
);
关于mysql - MySQL错误1005-外键不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46665496/