6

我似乎永远无法使用 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)

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

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

我不知道出了什么问题!如果有什么不同,我正在使用 Java。

4

3 回答 3

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
);

以上内容已经过测试并且有效,但是由于您总是必须将其包装在反引号中(在每个INSERT,UPDATE和中DELETE),您可能想要更改名称,或者只是养成将所有字段包装在反引号中的习惯,它还有其他优点。

于 2012-04-09T15:38:35.540 回答
1

将列名更改desc为任何不同的名称,因为它是descendor的保留字describe

于 2012-04-09T15:40:56.353 回答
0

desc是保留字,不能作为 表或列的名称。您可以用作列名。更改名称后,您的陈述应该有效。description

于 2012-04-09T15:34:36.800 回答