2017-02-28 3 views
-1

Errors ImageMySQL-Stammbaum

Irgendeine Idee zu diesen Syntaxfehlern? Bezogen auf die FOREIGN KEY-Syntax? Keine Ahnung! Ich habe den ENGINE = INNODB entfernt; Linien, aber es funktioniert immer noch nicht.

DROP TABLE IF EXISTS Marriage; 
CREATE TABLE Marriage (
    marriageID int NOT NULL, 
    PRIMARY KEY(marriageID), 
    date DATE, 
    place varchar(100) 
); 

Die obersten funktioniert gut - das wirkliche Problem beginnt mit dem Fremdschlüssel der nächsten:

DROP TABLE IF EXISTS MarriagePerson; 
CREATE TABLE MarriagePerson (
    marriagePersonID int NOT NULL, 
    marriageID int, 
    personID int, 
    PRIMARY KEY(marriagePersonID), 
    FOREIGN KEY marriageID REFERENCES Marriage(marriageID), 
    FOREIGN KEY personID REFERENCES Person(personID) 
); 

DROP TABLE IF EXISTS Person; 
CREATE TABLE Person (
    personID int NOT NULL, 
    PRIMARY KEY(personID), 
    firstName varchar(100), 
    lastName varchar(100), 
    gender ENUM(male, female, nonBinary), 
    birthDate DATE, 
    birthPlace varchar(100), 
    deathDate DATE, 
    deathPlace varchar(100), 
    causeOfDeath varchar(100), 
    note varchar(1000) 
) ENGINE=InnoDB; 

DROP TABLE IF EXISTS Parent; 
CREATE TABLE Parent (
    parentID int NOT NULL, 
    PRIMARY KEY(parentID), 
    FOREIGN KEY personID int, 
    FOREIGN KEY parentPersonID int, 
    relationship ENUM(sperm, egg) 
) ENGINE=InnoDB; 
+0

Sie haben einige Fremdschlüssel in der Tabelle "Parent", aber sie verweisen auf nichts. –

+1

Und was sind diese Syntaxfehler? – Shadow

+0

Können Sie die Fehler posten? – Krishnakumar

Antwort

1

Wenn Sie es in der gleichen Reihenfolge ausgeführt werden, wie Sie gebucht haben,

In der zweiten Abfrage haben Sie:

FOREIGN KEY personID REFERENCES Person(personID) 

Welche ist noch nicht erstellt. Die Personentabelle wird in der nächsten Abfrage erstellt.

+0

Sie sind fantastisch, DANKE !!! : D – Ruth

+0

Gut zu helfen !! Lassen Sie uns dieses Thema schließen, indem Sie dies als Antwort markieren. – Krishnakumar