CREATE TABLE语句中的MySQL语法错误

时间:2012-07-08 18:19:28

标签: mysql

SQL查询:

CREATE TABLE  `comment_threads` (
 `comment_id` INT( 11 ) UNSIGNED NOT NULL DEFAULT  '0',
 `updated` TIMESTAMP NOT NULL ,
 `timestamp` TIMESTAMP NOT NULL ,
) ENGINE = MYISAM ;

这是一个旧文件,我试图通过phpMyAdmin在HostGator上运行。我收到一条错误消息:

  

MySQL说:#1064 - 你的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以便在第5行的')ENGINE = MyISAM'附近使用正确的语法

更新: 如果我将语句更改为此,我仍然会收到错误:

CREATE TABLE comment_threads (
comment_id INT( 11 ) UNSIGNED NOT NULL DEFAULT '0',
updated TIMESTAMP( 14 ) NOT NULL ,
timestamp TIMESTAMP NOT NULL
PRIMARY KEY ( comment_id ) )
ENGINE = MYISAM ;

我收到错误:

  

错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以便在'(14)NOT NULL附近使用正确的语法,   时间戳TIMESTAMP非空   PRIMARY KEY(comment_id))   ENGI'在第3行

1 个答案:

答案 0 :(得分:6)

您的MySQL查询不正确。将其更正为this

CREATE TABLE  `comment_threads` (
     `comment_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
     `updated` TIMESTAMP NOT NULL ,
     `timestamp` TIMESTAMP NOT NULL
  ) ENGINE=MyISAM;

要在phpMyAdmin中运行此功能,您可以使用in-built table creator或在SQL查询窗口中输入更正后的SQL语句。

请注意,我在最后TIMESTAMP NOT NULL行之后(紧接在结束)之前删除了逗号。

更新: 您发布的第二个声明更正为this

CREATE TABLE  `comment_threads` (
     `comment_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
     `updated` TIMESTAMP NOT NULL ,
     `timestamp` TIMESTAMP NOT NULL,
PRIMARY KEY(`comment_id`)
  ) ENGINE=MyISAM;

以下是您在第二个CREATE TABLE声明中引入的问题:

  1. TIMESTAMP( 14 )应为TIMESTAMP(根据documentation
  2. 您需要在行TIMESTAMP NOT NULL行后面加逗号。现在需要逗号,因为与第一个示例不同,您将语句的两部分分开:TIMESTAMP NOT NULL行和PRIMARY KEY声明。
  3. 如果您想了解有关调试SQL语句的简单方法的更多信息,我强烈建议您查看我的answer to this question(请参阅标题为的更多信息,了解如何有条不紊地修复此类错误)。

    确保当您更改CREATE TABLE语句或任何代码时,您以足够小的增量进行更改,而您只是“最多只打破一件事”一时间。“对于第二个CREATE TABLE语句,没有理由更改第一个TIMESTAMP声明,这样做会破坏代码。这条线正在运作;无需改变它。