首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL中字符数据类型的最大长度错误

MySQL中字符数据类型的最大长度错误
EN

Stack Overflow用户
提问于 2016-09-22 17:15:07
回答 2查看 230关注 0票数 1

当字符编码为latin1 (单字节字符集)时,在SQL语句下面执行时不会出错.

代码语言:javascript
复制
create table chartype  (chardata char(255)); 

但当字符编码为UTF-8 (每个字符为3字节)时,

代码语言:javascript
复制
create table chartype  (chardata char(255));  

这条语句应该会抛出错误,但执行时不会出现任何错误。字符数据类型的最大长度为255 bytes,对于UTF-8编码,它应该只允许以下语句

代码语言:javascript
复制
create table chartype  (chardata char(85));

85*3=255 bytes,因此85UTF-8字符集的最大长度。

请澄清我。

EN

回答 2

Stack Overflow用户

发布于 2016-09-22 17:36:46

当您说CHAR(255)时,您正在创建一个可以容纳255个字符的固定长度字段。这与字节不同。UTF-8字符的长度从1字节到4字节不等,这取决于您所讨论的字符,但在MySQL中,默认情况是只容纳3字节长的字符。

要处理完整范围的Unicode字符,您需要使用utf8mb4编码。

一定要优先使用VARCHAR而不是CHAR,因为CHAR的长度是固定的,造成了大量的浪费空间。

票数 1
EN

Stack Overflow用户

发布于 2016-09-22 17:43:17

http://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html部分地说:

对于存储多字节字符的VARCHAR列,有效的最大字符数较少。例如,utf8mb3字符每个字符最多需要三个字节,因此使用utf8mb3字符集的VARCHAR列最多可以声明为21,844个字符。

这同样适用于CHAR或TEXT,或支持字符集的任何其他数据类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39645110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档