【问题标题】:mysql 1064 error ou have an error in your SQL syntax;mysql 1064 错误您的 SQL 语法有错误;
【发布时间】:2012-10-10 18:20:07
【问题描述】:

在 phpmyadmin 中创建表时显示以下错误![在此处输入图像描述][1] 错误

SQL 查询:

CREATE TABLE `user` (
`usrID` BIGINT( 11 ) NOT NULL ,
`name` VARCHAR( 100 ) NOT NULL ,
`email` VARCHAR( 100 ) NOT NULL ,
`mobile` VARCHAR( 10 ) NOT NULL ,
`gender` CHAR( 10 ) NOT NULL ,
`countryID` INT( 11 ) NULL ,
`stateID` INT( 11 ) NULL ,
`cityID` INT( 11 ) NULL ,
`pincode` VARCHAR( 6 ) NULL ,
`place` VARCHAR( 100 ) NULL ,
`address` VARCHAR( 200 ) NULL ,
`usertype` VARCHAR( 5 ) NULL ,
`pass` VARCHAR( 20 ) NULL ,
`edate` DATETIME NULL ,
`eusrID` INT( 11 ) NULL ,
`busrID` INT( 11 ) NULL ,
`adminID` INT( 11 ) NULL ,
`active` SET( 1 ) NOT NULL
) ENGINE = innodb

MySQL 说:文档

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法使用 在第 1 行靠近 '1) NOT NULL) ENGINE = innodb'

【问题讨论】:

标签: mysql


【解决方案1】:

1 的值应该用单引号括起来。 See here for details.

`active` SET( '1' ) NOT NULL

SQLFiddle Demo

【讨论】:

  • @JoachimIsaksson 你是对的。我今天学了些新东西。我认为该值应该用单引号括起来,如演示中所示。如果我尝试删除值周围的单引号,则不会构建架构。
  • @JoachimIsaksson 我在那个页面上没有看到分歧,你能更具体一点吗?它说这些值被指定为字符串,尽管它们在内部表示为数字。
  • @Barmar 该评论是针对早期版本的答案,我删除了它,因为它现在有点令人困惑:)
  • @Barmar 我的第一个答案是active INT(1) NOT NULL DEFAULT 1,因为我不知道SET。 Joachim Isaksson 是对的。
【解决方案2】:

SET 为列获取多个可能的字符串值,例如;

`color` SET('red', 'green', 'blue')

这意味着该列可能具有值'red''red,blue''red,green,blue' 等。

你的定义;

`active` SET(1)

真的没有任何意义。您正在寻找一个布尔标志 (INT(1)),或者您需要列出该字段可能具有的值。请注意,SET('yes','no') 将允许所有值 'yes''no''yes,no'(组合),这可能不是 active 标志的最佳选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 2016-01-24
    • 2017-07-13
    相关资源
    最近更新 更多