繁体   English   中英

CREATE TABLE语句中的MySQL语法错误

[英]MySQL syntax error in the CREATE TABLE statement

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服务器版本相对应的手册,以在第3行的'(14)NOT NULL,timestamp TIMESTAMP NOT NULL PRIMARY KEY(comment_id))ENGI'附近使用正确的语法

您的MySQL查询不正确。 它纠正到这个作品。

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

要在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;

这是您在第二个CREATE TABLE语句中引入的问题:

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

如果您想获得有关调试SQL语句的简单方法的更多信息,强烈建议您看一下我对这个问题的答案 (请参阅标题为“ 如何有条理地修复此类错误的更多信息 ”部分)。

确保在更改CREATE TABLE语句或任何代码段时 ,以足够小的增量进行更改,以使您“一次最多中断一件事”。 对于第二个CREATE TABLE语句,没有理由更改第一个TIMESTAMP声明,并且这样做会破坏代码。 那条线在工作; 无需更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM