2014-07-22 45 views
0

我将枚举类型的所有表字段更新为tinyint(1),但我看到一些奇怪的行为。MySql - 将字段枚举类型更改为tinyint时发生的奇怪行为

说field_x类型是enum('0','1','2');

修改表(ALTER TABLE a MODIFY field_x tinyint(1) NOT NULL DEFAULT 1)之后,与原来的值0场现在有1,与原值1现在有2场...

有谁知道是什么原因造成的?

+1

可能重复[Mysql从枚举到tinyint问题](http://stackoverflow.com/questions/7607763/mysql-from-enum-to-tinyint-problems) – Stefan

回答

2

根本的问题是枚举是如何存储在MySQL

enum('0','1','2') MySQL的存储枚举值作为内部整数密钥。

因此,对于上述指标是

0 = 1 
1 = 2 
2 = 3 

所以,当你改变科拉姆到tinyint然后保存的值这是作为字符串转换为相应的索引tinyint和你正在

1 for 0, 2 for 1 ....