2017-10-10 4 views
0

Je reçois le code d'erreur 1005, ce qui signifie qu'il y a un problème avec mes clés étrangères. Quelqu'un peut-il m'expliquer cela?Erreur MySQL 1005 - Les clés étrangères ne fonctionnent pas

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) 
); 

Toute aide est grandement appréciée!

+0

Il n'y a pas student_id dans student only stud_id. –

+0

Toujours quelque chose de si simple et stupide ... Merci! –

+0

je ne conseillerais pas d'appeler votre clé étrangère la même chose que votre clé primaire –

Répondre

0

Vous utilisez des noms de colonnes incorrects pour les références. Student_id n'est pas un nom de colonne dans la table des étudiants, il doit s'agir de stud_id. Idem pour subject_code. Je les ai corrigé et posté ci-dessous.

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) 
);