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行
答案 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
声明中引入的问题:
TIMESTAMP( 14 )
应为TIMESTAMP
(根据documentation)TIMESTAMP NOT NULL
行后面加逗号。现在需要逗号,因为与第一个示例不同,您将语句的两部分分开:TIMESTAMP NOT NULL
行和PRIMARY KEY
声明。 如果您想了解有关调试SQL语句的简单方法的更多信息,我强烈建议您查看我的answer to this question(请参阅标题为的更多信息,了解如何有条不紊地修复此类错误)。
确保当您更改CREATE TABLE
语句或任何代码时,您以足够小的增量进行更改,而您只是“最多只打破一件事”一时间。“对于第二个CREATE TABLE
语句,没有理由更改第一个TIMESTAMP
声明,这样做会破坏代码。这条线正在运作;无需改变它。