1

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 ;

我得到错误:

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

4

1 回答 1

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;

要在 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声明,这样做会破坏代码。那条线正在工作;无需更改它。

于 2012-07-08T18:31:29.467 回答