语法错误使用名为"desc"的列创建表

Gre*_*reg 6 mysql

我似乎永远无法使用TEXT类型的列创建MySQL表.这是我的MySQL:

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)
Run Code Online (Sandbox Code Playgroud)

当它运行时,我得到这个:

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
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚出了什么问题!如果它有任何区别,我正在使用Java.

Umb*_*lla 16

desc是保留字,不应用作列的名称.您可以将其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
);
Run Code Online (Sandbox Code Playgroud)

上面的测试和工作,但因为你总是必须将它包装在后面的标记(在每个INSERT,UPDATEDELETE)你可能想要改变名称,或只是养成在背面包裹所有字段的习惯,这还有其他优点.