2012-04-10 17 views
3

Ich habe ein Problem mit einer einfachen Abfrage CREATE TABLE. Ich habe zwei Tabellen "Resort" (mit resortID und resortName) und "season" (mit resortID und resortName) in einer Beziehung von vielen zu. Ich versuche, die Verbindungstabelle resort_season mit einer der beiden folgenden Abfragen zu erstellen:MySQL-Fehler bei CREATE TABLE für Viele-zu-Viele-Beziehung

CREATE TABLE resort_season (
resortID MEDIUMINT UNSIGNED NOT NULL, 
seasonID MEDIUMINT UNSIGNED NOT NULL, 
FOREIGN KEY (resortID) REFERENCES resort (resortID), 
FOREIGN KEY (seasonID) REFERENCES season (seasonID), 
PRIMARY KEY (resortID, seasonID) NOT NULL 
); 

CREATE TABLE resort_season (
resortID MEDIUMINT UNSIGNED NOT NULL FOREIGN KEY REFERENCES resort (resortID), 
seasonID MEDIUMINT UNSIGNED NOT NULL FOREIGN KEY REFERENCES season (seasonID), 
PRIMARY KEY (resortID, seasonID) NOT NULL 
); 

Beide Abfragen geben Sie mir einen Fehler, der (in diesem Fall bei der zweiten Abfrage) lautet:.? "You have an error in your syntax; check manual....for right syntax to use near'FOREIGN KEY REFERENCES resort (resortID), seasonID MEDIUMINT UNSIGNED NOT NULL F' at line 2"

Was mache ich falsch das gibt mir Kopfschmerzen, weil ich kann nur nicht sehen, warum der Fehler.

Wenn ich einfach

CREATE TABLE resort_season (
resortID MEDIUMINT UNSIGNED NOT NULL, 
seasonID MEDIUMINT UNSIGNED NOT NULL, 
PRIMARY KEY (resortID, seasonID) NOT NULL 
); 

dann funktioniert es gut und die Tabelle wird erstellt. Ich bin mir jedoch nicht sicher, ob diese Tabelle gültig auf die Tabellen Resort und Saison verweisen wird.

+1

Sind diese InnoDB-Tabellen? – davidethell

+0

Ich habe das nicht ausdrücklich in den Abfragen angegeben. Wäre das ein Grund für diesen Fehler? – Justs

Antwort

1

Entfernen NOT NULL von der primären Schlüsseldefinition -

CREATE TABLE resort_season(
    resortID MEDIUMINT UNSIGNED NOT NULL, 
    seasonID MEDIUMINT UNSIGNED NOT NULL, 
    FOREIGN KEY (resortID) REFERENCES resort (resortID), 
    FOREIGN KEY (seasonID) REFERENCES season (seasonID), 
    PRIMARY KEY (resortID, seasonID) 
); 
+0

Oh deaaarrrr !! Es funktioniert, wenn ich das entferne! – Justs

+0

DANKE! Also sollte die NOT NULL-Sache nur angegeben werden, wenn die Primärschlüssel in den Resort- und Season-Tabellen definiert werden? – Justs

+0

Sie haben 'resortID' und' seasonID' als NOT NULL in der Tabelle 'resort_season' angegeben, daher sollten verwandte Felder (in' resort'- und 'season'-Tabellen) ebenfalls NICHT NULL sein. Promay-Schlüssel erlaubt keine NULL-Werte. – Devart

Verwandte Themen