Mysql语法错误,但在哪里以及为什么?

时间:2013-01-03 15:08:39

标签: mysql sql

我只是无法理解为什么我在这个表创建时出现语法错误:

CREATE TABLE IF NOT EXISTS Tasks (
ID INT UNSIGNED NOT NULL auto_increment,
Name VARCHAR(255) DEFAULT '' NOT NULL,
Description TEXT,
Date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
Status ENUM('New', 'Assigned', 'In Progress', 'On Hold', 'Done', 'Canceled'),
Priority ENUM('Urgent', 'High', 'Normal', 'Low'),
Creator SMALLINT UNSIGNED DEFAULT '0' NOT NULL,
Assignee SMALLINT UNSIGNED,
Starting DATETIME,
Deadline DATETIME,
Completion DATETIME,
PRIMARY KEY(ID)
) ENGINE = INNODB;

给我:

ERROR 1064 (42000): 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 
'Starting DATETIME,
Deadline DATETIME,
Completion DATETIME,
PRIMARY KEY(ID)
) ENG' at line 10

看起来它给我带来了日期时间的麻烦,但为什么呢?我已经在另一张表中使用了它并且它正在工作。

感谢。

2 个答案:

答案 0 :(得分:4)

STARTING是一个保留关键字,它应该用反引号转义,

CREATE TABLE IF NOT EXISTS Tasks 
(
    ID INT UNSIGNED NOT NULL auto_increment,
    Name VARCHAR(255) DEFAULT '' NOT NULL,
    Description TEXT,
    Date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    Status ENUM('New', 'Assigned', 'In Progress', 'On Hold', 'Done', 'Canceled'),
    Priority ENUM('Urgent', 'High', 'Normal', 'Low'),
    Creator SMALLINT UNSIGNED DEFAULT '0' NOT NULL,
    Assignee SMALLINT UNSIGNED,
    `Starting` DATETIME,
    Deadline DATETIME,
    Completion DATETIME,
    PRIMARY KEY(ID)
) ENGINE = INNODB;

答案 1 :(得分:1)

Starting是保留关键字。也许你可以使用另一种。