關於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