枚举值和错误1064

时间:2017-03-25 08:49:27

标签: mysql

我遇到此错误的问题。

这是创建表的代码

CREATE TABLE `qa`.`question`(
  `id` INT(9) NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(256) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `password` VARCHAR(256) CHARACTER SET utf16 COLLATE utf16_general_ci NOT NULL,
  `email` VARCHAR(512) NOT NULL,
  `phone` INT(11) NOT NULL,
  `content` TEXT NOT NULL,
  `status` ENUM(0) NOT NULL,
  PRIMARY KEY(`id`)
) ENGINE = InnoDB CHARSET = utf8 COLLATE utf8_general_ci;

我看到同样的问题,但在我的代码中都没有出现。

我也考虑默认值,但我收到了这个:

  

id的值无效(错误#1067)

1 个答案:

答案 0 :(得分:0)

我无法重现你得到的错误。我得到了一个不同的错误:

  

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'0)NOT NULL附近使用正确的语法,

这是因为ENUM的元素必须是字符串,而不是数字。我改成了:

  `status` ENUM('OK', 'FAIL') NOT NULL,

并且表创建成功。

如果您尝试将默认值分配给id列,则会出现错误,因为它也声明使用AUTO_INCREMENT。见#1067 - Invalid default value for 'bonusid' how can i fix this error?