向现有表格添加新枚举列

21

我正在尝试使用以下查询向我的表中添加一列gender:


ALTER TABLE QRCodeUser ADD gender CHAR(1) enum('M','F') NOT NULL;
我遇到了这个错误:
#1064 - 在第一行附近使用'enum('M','F') NOT NULL',请检查与您的MySQL服务器版本相对应的手册以使用正确的语法。
我的错误在哪里?

3
CHAR(1)是一种类型。enum('M','F')也是一种类型。一个列只能有一种类型。 - Mark Amery
2个回答

41

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

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

非常感谢,它有效了!但是为什么我的解决方案不起作用呢……我不明白…… - max85
@dsharew,“M”和“F”代表什么? - Fai Zal Dong
这是问题的一部分;尽管看起来是针对“男性”和“女性”的。 - dsharew
1
我认为答案中的枚举列表可能需要更新到2019年 :laugh: - Andrew Sohn
@AndrewSohn 需要将它转换为 varchar :P - Elias

6

语法的正确使用:

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

枚举定义一组要分配给列的值。更好的例子是ALTER TABLE table_name ADD column_name enum(value1value2,..., value_n);不能同时定义CHAR(1),因为ENUM是一种类型。mysql 内部使用int来表示ENUM,它使用定义中值的序数位置,因此value1等于0,value2等于1,value_n等于n。希望有帮助。 - TexWiller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接