首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个MySQL“文本”字段可以容纳多少UTF-8文本?

一个MySQL“文本”字段可以容纳多少UTF-8文本?
EN

Stack Overflow用户
提问于 2010-12-12 10:40:53
回答 2查看 56.1K关注 0票数 54

根据MySQL的说法,一个text列可以容纳65,535个字节。

因此,如果这是一个合法的边界,那么它实际上只能容纳大约32000个UTF-8字符,对吗?或者这是一种“模糊”的边界,编写文档的人不能区分字符和字节,如果设置为utf8_general_ci,它实际上将允许大约64kUTF-8字符

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-12 10:51:46

text列最多可以包含65,535个字节。

一个utf-8字符最多可以包含3个字节。

所以..。您的实际限制可以是21,844字符。

更多信息请参见手册:http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html

可变长度字符串。M表示最大列长度(以字符为单位)。M的范围是0到65,535。VARCHAR的有效最大长度取决于最大行大小(65,535字节,在所有列之间共享)和所使用的字符集。例如,utf8字符可能要求每个字符最多三个字节,因此可以将使用utf8字符集的VARCHAR列声明为最多21,844个字符。

票数 79
EN

Stack Overflow用户

发布于 2010-12-15 17:24:10

但是,当用作主键时,MySQL假定每个列大小的限制都会将3个字节的添加到键中。

代码语言:javascript
复制
mysql> alter table test2 modify code varchar(333) character set utf8;
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> alter table test2 modify code varchar(334) character set utf8;
ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes

嗯,使用长字符串列作为主键通常是一种错误的做法,但是我在使用一个商业数据库(!)时遇到了这个问题。产品。

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

https://stackoverflow.com/questions/4420164

复制
相关文章

相似问题

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