我正在将枚举类型的所有表字段更新为 tinyint(1),但我看到了一些奇怪的行为。
假设 field_x 类型是 enum('0','1','2')
;
更改表后(ALTER TABLE a MODIFY field_x tinyint(1) NOT NULL DEFAULT 1
),原始值为 0 的字段现在有 1,原始值为 1 的字段现在有 2...
有人知道是什么原因造成的吗?
最佳答案
根本的问题是 enum 在 mysql 中的存储方式
对于 enum('0','1','2')
MySQL 在内部将枚举值存储为整数键。
所以对于上面的指标都是
0 = 1
1 = 2
2 = 3
因此,当您将 colum 更改为 tinyint
时,作为字符串的保存值将转换为 tinyint
的相应索引,您将获得
1 for 0, 2 for 1 ....
关于php - MySql - 将字段枚举类型更改为 tinyint 时的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24897758/