2012-04-09 6 views
5

Ich kann nie scheinen, MySQL-Tabellen mit Spalten des Typs TEXT erstellen zu können. Hier ist meine MySQL:Syntaxfehler Erstellen einer Tabelle mit einer Spalte mit dem Namen 'desc'

CREATE TABLE factions(id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), name VARCHAR(16) NOT NULL, desc TEXT NOT NULL, admins TEXT NOT NULL, mods TEXT, members TEXT, land TEXT, enemies TEXT, allies TEXT) 

Wenn es läuft, bekomme ich diese:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'desc text NOT NULL, admins text NOT NULL, mods text, members text, land text, en' at line 1 

ich kann nicht herausfinden, was los ist! Ich benutze Java, wenn es einen Unterschied macht.

+1

Auf einer anderen Anmerkung, ich bin ziemlich sicher, dass Ihre Verwendung von TEXT für die meisten diese Spalten ist falsch – IcedDante

+1

Ja, die meisten Diese TEXT-Verwendungen waren ziemlich schlecht. Zum Glück habe ich mich sehr verbessert, seit ich diese Frage gestellt habe. – Greg

+1

Ich dachte, du hättest wahrscheinlich;) – IcedDante

Antwort

14

desc ist ein reserviertes Wort und sollte nicht als Name einer Spalte verwendet werden. Sie könnendesc als Name einer Spalte verwenden, aber wenn Sie dies tun, müssen Sie immer in Back-Ticks wickeln.

CREATE TABLE factions(
    id INT NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY(id), 
    name VARCHAR(16) NOT NULL, 
    `desc` TEXT NOT NULL, 
    admins TEXT NOT NULL, 
    mods TEXT, 
    members TEXT, 
    land TEXT, 
    enemies TEXT, 
    allies TEXT 
); 

Die oben getestet und funktioniert, aber da Sie immer es wickeln in Back-Zecken werden müssen (in jedem INSERT, UPDATE und DELETE) können Sie den Namen ändern möchten, oder einfach nur in der Gewohnheit, alle Felder in Back-Ticks zu wickeln, was andere Vorteile hat.

0

desc ist ein reserviertes Wort und nicht darf nicht als Namen einer Tabelle oder Spalte angegeben werden. Sie können description als Spaltenname verwenden. Mit der Namensänderung sollte Ihre Aussage funktionieren.

+0

Das ist nicht ganz richtig. – Umbrella

1

Änderung des Spaltenname desc ein etwas anders, da es sich um ein reserverd Wort für descend oder describe

Verwandte Themen