Mysql数据库中varchar的长度与字节的关系

今天在给一列建唯一索引的时候,提示 1071 -Specified key was too long; max key length is 3072 bytes 我的第一反应是去看对应列的数据,都是最多七八个字的中文,然后看到对应列的类型,是varchar(2056), 由此想到varchar的长度到底跟字节是什么关系。 英文字母和中文汉字在不同字符集编码下的字节数 英文字母 字节数 : 1;编码:GB2312 字节数 : 1;编码:GBK 字节数 : 1;编码:GB18030 字节数 : 1;编码:ISO-8859-1 字节数 : 1;编码:UTF-8 字节数 : 4;编码:UTF-16 字节数 : 2;编码:UTF-16BE 字节数 : 2;编码:UTF-16LE 中文汉字 字节数 : 2;编码:GB2312 字节数 : 2;编码:GBK 字节数 : 2;编码:GB18030 字节数 : 1;编码:ISO-8859-1 字节数 : 3;编码:UTF-8 字节数 : 4;编码:UTF-16 字节数 : 2;编码:UTF-16BE 字节数 : 2;编码:UTF-16LE 计算varchar(n)最多存储多少字节的内容 varchar(n)能存储n个字符,不管是数字,字母还是汉字,那么根据不同编码最大占用的字节数为4,最大占用n*4个字节。 所以唯一索引要求key值长度不能超过3072,如果列类型是varchar,那么3072/4=768, 作为唯一索引的varchar列的长度最多为768!

May 14, 2019 · 1 min · Theme PaperMod