语法错误创建一个名为'desc'的列的表

问题描述:

我似乎无法用TEXT类型的列创建MySQL表。这里是我的MySQL:语法错误创建一个名为'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) 

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

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如果它有任何区别。

+1

一个被保留的字在另一方面,我敢肯定你的文本中使用的大多数这些列是不正确 – IcedDante 2014-04-09 12:47:59

+1

呀,大部分那些TEXT使用非常糟糕。幸运的是,自从我最初提出这个问题以来,我已经有了很大的改进。 – Greg 2014-04-10 23:59:14

+1

我想你可能有;) – IcedDante 2014-04-11 01:09:58

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

以上的测试和工程,但因为你总是把它包起来在反单引号(每INSERTUPDATEDELETE),你可能要更改名称,或者只是得到的习惯于将所有领域都包含在反标记中,这具有其他优点。

desc是一个保留字和 不能 不得被给定为一个名称表或列。您可以使用description作为列名称。随着名称的变化,您的声明应该起作用。

+0

这不完全正确。 – Umbrella 2012-04-09 15:40:39

变化列名desc到,因为它不同任何东西是descenddescribe