2012-03-24 4 views
2

Salut tout ce que je ne peux pas trouver l'erreur dans ce tableau bit de création, semble vraiment hâte d'être droit, voici ce qu'il me donne:MySQL erreur # 1064

ERREUR 1064 à la ligne 3: Vous avez un erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour le droit utiliser la syntaxe près « FOREIGN KEY (courses_courseDepartmentAbbv)) » à ligne 8

DROP TABLE IF EXISTS courses; 

CREATE TABLE courses(
    courses_courseNumber INT NOT NULL AUTO_INCREMENT, 
    courses_courseTitle VARCHAR(25) NOT NULL, 
    courses_courseTeacher VARCHAR(30) NOT NULL, 
    courses_courseCostOfBooks DECIMAL(5,2) NOT NULL, 
    courses_courseDepartmentAbbv CHAR(4) NOT NULL, 
    PRIMARY KEY (courses_courseNumber), 
    FOREIGN KEY (courses_courseTeacher), 
    FOREIGN KEY (courses_courseDepartmentAbbv) 
); 

DROP TABLE IF EXISTS departments; 

CREATE TABLE departments(
    departments_departmentAbbv CHAR(4) NOT NULL, 
    departments_departmentFullName VARCHAR(15) NOT NULL, 
    PRIMARY KEY (departments_departmentAbbv), 
    FOREIGN KEY (departments_departmentAbbv) REFERENCES (courses_courseDepartmentAbbv) 
); 

DROP TABLE IF EXISTS teachers; 

CREATE TABLE teachers(
      teachers_teacherName VARCHAR(20) NOT NULL, 
    teachers_teacherHomeroom SMALLINT(3) NOT NULL, 
    teachers_teacherHomeroomGrade SMALLINT(1) NOT NULL, 
    teachers_teacherFullTime BOOL NOT NULL, 
    PRIMARY KEY (teachers_teacherName), 
    FOREIGN KEY (teachers_teacherName) REFERENCES (courses_courseTeacher) 
); 

Répondre

2

Vous devez avoir une référence après chaque clé étrangère . Il vous manque cela au début de la configuration des cours. Voici le documentation

Je pense que c'est plus de ce que vous voulez. Votre ordre de création n'était pas correct. Vous avez eu des clés étrangères dans le mauvais emplacement en raison de cela. Vous ne définissez que les mappages de clés étrangères sur les tables avec les relations avec le PK. Vous avez seulement besoin de configurer le PK sur vos autres tables. Tant que vous créez les tables dans le bon ordre, vous pouvez le faire, comme ci-dessous.

Ainsi, teachers et departments ont des clés qui sont les clés étrangères dans la table courses. teachers et departments n'a pas besoin de s'inquiéter de la clé étrangère. Vous laisser cela à la table qui a fait la référence (courses)

DROP TABLE IF EXISTS teachers; 

CREATE TABLE teachers(
      teachers_teacherName VARCHAR(20) NOT NULL, 
    teachers_teacherHomeroom SMALLINT(3) NOT NULL, 
    teachers_teacherHomeroomGrade SMALLINT(1) NOT NULL, 
    teachers_teacherFullTime BOOL NOT NULL, 
    PRIMARY KEY (teachers_teacherName) 
    --FOREIGN KEY (teachers_teacherName) REFERENCES courses (courses_courseTeacher) 
    --This is not where you set up the FK for courses 
); 

DROP TABLE IF EXISTS departments; 

CREATE TABLE departments(
    departments_departmentAbbv CHAR(4) NOT NULL, 
    departments_departmentFullName VARCHAR(15) NOT NULL, 
    PRIMARY KEY (departments_departmentAbbv) 
    --FOREIGN KEY (departments_departmentAbbv) REFERENCES courses (courses_courseDepartmentAbbv) 
    --This is not where you set up the FK for courses 
); 

CREATE TABLE courses(
    courses_courseNumber INT NOT NULL AUTO_INCREMENT, 
    courses_courseTitle VARCHAR(25) NOT NULL, 
    courses_courseTeacher VARCHAR(30) NOT NULL, 
    courses_courseCostOfBooks DECIMAL(5,2) NOT NULL, 
    courses_courseDepartmentAbbv CHAR(4) NOT NULL, 
    PRIMARY KEY (courses_courseNumber), 
    FOREIGN KEY (courses_courseTeacher) 
     REFERENCES teachers (teachers_teacherName) 
    FOREIGN KEY (courses_courseDepartmentAbbv) 
     REFERENCES departments(departments_departmentAbbv) 
); 
+0

essayé, me donner toujours la même erreur que – user1086348

+0

@ user1086348 je mis à jour ma réponse avec le code qui devrait être utilisé comme vos références étaient désactivées. –

+0

génial je comprends maintenant, débutant ici, merci – user1086348

0

Vous devez donner une clause REFERENCES pour vos clauses FOREIGN KEY

FOREIGN KEY (courses_courseTeacher) 
FOREIGN KEY (courses_courseDepartmentAbbv)