2017-10-10 66 views
0

我收到錯誤代碼1005,這意味着我的外鍵有問題嗎?任何人都可以向我解釋這一點!MySQL錯誤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) 
); 

任何幫助,非常感謝!

+0

學生只有stud_id沒有student_id。 –

+0

總是那麼簡單和愚蠢...... Thankyou! –

+0

我也wouldnt建議調用你的外鍵與你的主鍵相同的東西 –

回答

0

您正在使用錯誤的列名作爲參考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) 
);