关于MySQL中的enum类型出现的错误:java.sql.SQLException: Data truncated for column 'xxxx' at row 1


enum的字段,在插入的时候,必须带上引号。否则会出现不可预期的问题

ENUM枚举

    一般不建议使用,后期不便于扩展。任何不在枚举的范围的值插入都会报错,一般用tinyint替代ENUM比较合适。

     ENUM的字段值不区分大小写。如insert into tb1 values("M"); 和insert into tb1 values("m");效果一样的。

 

补充:

enum的存储原理:

(http://justwinit.cn/post/7354/?utm_source=tuicool&utm_medium=referral)

在建立enum类型的字段时,我们会给他规定一个范围比如 enum('a','b','c'),这时mysql内部会建立一张hash结构的map表,类似:0000 -> a,0001 -> b,0002 -> c。

当我插入一条数据,此字段的值位a或b或c时,他存储在里面的不是这个字符,而是对应他的索引,也就是那个0000或0001或0002。

同样,enum在mysql手册上的说明:

ENUM('value1','value2',...)

1或2个字节,取决于枚举值的个数(最多65,535个值)

除非enum的个数超过了一定数量,否则他所占的存储空间也总是1字节。

转载自https://blog.csdn.net/weixin_34234721/article/details/89837410


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM