【问题标题】:MySQL syntax error in the CREATE TABLE statementCREATE TABLE 语句中的 MySQL 语法错误
【发布时间】:2012-07-08 06:53:37
【问题描述】:

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

【问题讨论】:

  • 什么?您是否想通过 phpmyadmin 运行此查询,然后使用 sql 选项卡。 (您也可以使用内置的表格创建器)
  • MySQL 说:#1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 5 行的 ') ENGINE=MyISAM' 附近使用正确的语法
  • 这就是我通过 myphpadmin 导入文件时遇到的错误...我已经阅读以将所有类型更改为引擎,就像这里 timestamp TIMESTAMP NOT NULL ,曾经是 timestamp时间戳(14)不为空,
  • @kevinfantini 如果我的回答对您有帮助,您可以通过单击其投票计数器下方的复选标记来接受它。这可以让人们搜索到它是正确的。

标签: mysql


【解决方案1】:

您的 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 声明。

如果您想了解有关调试 SQL 语句的简单方法的更多信息,我强烈建议您查看我的answer to this question(请参阅标题为有关如何有条不紊地修复此类错误的更多信息部分)。

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

【讨论】:

  • 下一次,如果您以不正确的方式彻底更改了CREATE TABLE 语句(就像您在本例中所做的那样),请提出一个新问题。我正在将您刚刚发布的声明添加到您的问题中,并且我将使用解决方案编辑我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-06
  • 2017-06-30
  • 1970-01-01
  • 2021-07-29
  • 1970-01-01
  • 2012-05-31
相关资源
最近更新 更多