CREATE TABLE语句中的MySQL语法错误

kev*_*ini -1 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 ;
Run Code Online (Sandbox Code Playgroud)

这是一个旧文件,我试图通过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 ;
Run Code Online (Sandbox Code Playgroud)

我收到错误:

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

Ric*_*ano 7

您的MySQL查询不正确.它纠正到这个工作.

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

要在phpMyAdmin中运行它,您可以使用内置表创建器或在SQL查询窗口中输入更正的SQL语句.

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

更新:您发布的第二个声明纠正了这个:

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

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

  1. TIMESTAMP( 14 )应该是TIMESTAMP(根据文件)
  2. 你需要一个逗号后面的TIMESTAMP NOT NULL行.逗号现在是必要的,因为与第一个示例不同,您将语句的两部分分开:TIMESTAMP NOT NULL行和PRIMARY KEY声明.

如果您想了解有关调试SQL语句的简单方法的更多信息,我强烈建议您查看我对此问题的答案(请参阅标题为" 如何有条不紊地修复此类错误的更多信息 " 节).

确保当你更改一个CREATE TABLE语句或任何一段代码时,你以足够小的增量进行更改,你只能"一次最多打破一件事".在第二个CREATE TABLE语句的情况下,没有理由更改第一个TIMESTAMP声明,这样做会破坏代码.这条线正在运作; 无需改变它.