2012-03-24 32 views
2

Hallo zusammen ich den Fehler nicht in dieser Tabelle Schöpfung etwas finden kann, scheint wirklich geradlinig zu sein, hier ist was es mir ist zu geben:MySQL-Fehler # 1064

ERROR 1064 in Zeile 3: Sie haben eine Fehler in Ihrer SQL-Syntax; überprüfen Sie das Handbuch, das für die richtige Syntax zu verwenden in der Nähe von 'FOREIGN KEY (courses_courseDepartmentAbbv))' bei Linie 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) 
); 

Antwort

2

Sie müssen haben eine Referenzen nach jedem Fremdschlüssel für Ihre MySQL-Server-Version entspricht . Das fehlt Ihnen am Anfang der Einrichtung von Kursen. Hier ist die documentation

Ich denke, das ist mehr von dem, was Sie wollen. Deine Erstellungsreihenfolge war nicht korrekt. Aus diesem Grund hatten Sie Fremdschlüssel an der falschen Stelle. Sie richten nur Fremdschlüsselzuordnungen auf den Tabellen mit den Beziehungen zum PK ein. Sie müssen nur den PK auf Ihren anderen Tischen einrichten. Solange Sie die Tabellen in der richtigen Reihenfolge erstellen, können Sie dies wie folgt tun.

So haben teachers und departments primäre Schlüssel, die Fremdschlüssel innerhalb der courses Tabelle sind. teachers und departments müssen sich keine Sorgen um den Fremdschlüssel machen. Sie verlassen, dass an den Tisch, die tatsächlich die Referenz hat (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

versucht zu geben, dass mir immer noch die gleichen Fehler zu geben, obwohl – user1086348

+0

@ user1086348 ich meine Antwort mit dem Code aktualisiert, die sein sollte verwendet, da Ihre Referenzen ausgeschaltet waren. –

+0

genial verstehe ich jetzt, Anfänger hier, danke – user1086348

0

Sie brauchen eine REFERENCES-Klausel für FOREIGN KEY-Klauseln

FOREIGN KEY (courses_courseTeacher) 
FOREIGN KEY (courses_courseDepartmentAbbv)