既然utf8能兼容绝大部分的字符,为什么要扩展utf8mb4

既然utf8能兼容绝大部分的字符,为什么要扩展utf8mb4。

       随着互联网的发展,产生了许多新类型的字符,例如emoji这种类型的符号,也就是我们通常在聊天时发的小黄脸表情,这种字符的出现不在基本多平面的Unicode字符之中,导致无法在MySQL中使用utf8存储,MySQL于是对utf8字符进行了扩展,增加了utf8mb4这个编码。

       所以,设计数据库时如果想要允许用户使用特殊符号,最好使用utf8mb4编码来存储,使得数据库有更好的兼容性,但是这样设计会导致耗费更多的存储空间。
————————————————
版权声明:本文为CSDN博主「Greedy_」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/seven_deadly_sins/article/details/91046938

易错点:Specified key was too long; max key length is 767 bytes

 我发现报错的那张表建立了一个varchar类型的索引,varchar(255),觉得没什么问题,其实不然,上述的767是字节,而varchar类型是字符,同时我发现我使用的字符集为(utf8mb4),这个指每个字符最大的字节数为4,所以很明显 4*255 > 767

所以就报上述错了(Specified key was too long; max key length is 767 bytes)。

       解决方法:

       改变varchar的字符数,我改成了64就可以了。varchar(64)

       或者启用innodb_large_prefix,那么限制值会增加到3072
———————————————— 即varchar 长度改的小点。
版权声明:本文为CSDN博主「异世界的造物主」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chenjianhuideyueding/article/details/88426021

发布了28 篇原创文章 · 获赞 5 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/java_utf8/article/details/103174595
今日推荐