根据MySQL的说法,一个text列可以容纳65,535个字节。
因此,如果这是一个合法的边界,那么它实际上只能容纳大约32000个UTF-8字符,对吗?或者这是一种“模糊”的边界,编写文档的人不能区分字符和字节,如果设置为utf8_general_ci,它实际上将允许大约64kUTF-8字符
发布于 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个字符。
发布于 2010-12-15 17:24:10
但是,当用作主键时,MySQL假定每个列大小的限制都会将3个字节的添加到键中。
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嗯,使用长字符串列作为主键通常是一种错误的做法,但是我在使用一个商业数据库(!)时遇到了这个问题。产品。
https://stackoverflow.com/questions/4420164
复制相似问题