[英]MySql - Strange behavior when altering field enum type to tinyint
我正在将所有具有枚举类型的表字段更新为tinyint(1),但看到一些奇怪的行为。
假设field_x类型为enum('0','1','2')
;
更改表后( ALTER TABLE a MODIFY field_x tinyint(1) NOT NULL DEFAULT 1
),原始值0的字段现在具有1,原始值1的字段现在具有2 ...
有人知道是什么原因造成的吗?
根本问题是如何在mysql中存储枚举
对于enum('0','1','2')
MySQL在内部将枚举值存储为整数键。
所以对于以上指标是
0 = 1
1 = 2
2 = 3
因此,当您将colum更改为tinyint
然后将保存为字符串的值转换为tinyint
的相应索引,您将得到
1 for 0, 2 for 1 ....
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.