【问题标题】:Adding new enum column to an existing table将新的枚举列添加到现有表
【发布时间】:2015-07-20 07:30:54
【问题描述】:

我正在尝试使用此查询将gender 列添加到我的表中:

ALTER TABLE QRCodeUser ADD gender CHAR(1) enum('M','F') NOT NULL;

我收到此错误:

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“enum('M','F') NOT NULL' 附近使用正确的语法

我的错误是什么?

【问题讨论】:

  • CHAR(1) 是一种类型。 enum('M','F') 也是一种类型。一列只能有一种类型。

标签: mysql enums alter


【解决方案1】:

试试这个(你不需要指定大小,char(1)):

ALTER TABLE QRCodeUser ADD gender  enum('M','F') NOT NULL;

【讨论】:

  • 非常感谢,它有效!但是为什么它对我的解决方案不起作用......我不明白......
  • @dsharew 'M' 和 'F' 代表什么?
  • 这是问题的一部分;似乎是“男性”和“女性”
  • 我认为答案中的这个枚举列表可能需要在 2019 年更新:笑:
  • @AndrewSohn 需要将其转换为 varchar:P
【解决方案2】:

语法的正确用法:

ALTER TABLE table_name ADD column_name  enum(`field1`,`field2`,...);

【讨论】:

  • enum 定义了一组要分配给列的值,一个更好的例子是 ALTER TABLE table_name ADD column_name enum(value1,value2,...,value_n);也不能定义 CHAR(1) 因为 ENUM os 是一种 mysql 内部使用 int 来表示 ENUM 它使用定义中值的序数位置所以 value1 是 eq 到 0 value2 是 eq 到 1 并且 value_n 是 eq 到 n HTH
猜你喜欢
  • 1970-01-01
  • 2019-12-08
  • 2014-10-20
  • 1970-01-01
  • 1970-01-01
  • 2022-11-16
  • 1970-01-01
  • 2014-10-18
  • 1970-01-01
相关资源
最近更新 更多