在使用多字节编码的字符集时,最大实际是 65535/编码字节长度,如使用gbk时,最大就是32767;而utf8编码字节长度为3,因此最大长度不能超过21845。
此外,varchar 的最大长度也受限于行长度,行长度即所有列的长度和,行长度限制为65535字节;因此,如有很多列,实际可定义的列长度会受影响。
2 注意事项二,当出现注意事项一中的情况下,可使用text类型代替varchar。
3 注意事项三,由于mysql在定义varchar时,会自动将大于65535或gbk的32767的类型转化为mediumtext,因此不要误认为varchar可以取大于这个长度的值。
使用 show create table ... 来查看便知;
有时,由于自动转化的原因,会出现一些很奇怪的现象:
create table c (a varchar(20000), a2 varchar(20000), a3 varchar(40000)) --会失败,提示超过行长度
create table c (a varchar(20000), a2 varchar(40000), a3 varchar(40000)) --则会成功,后两列均转化为 mediumtext
一、数字类型
二、字符串类型
另外,当varchar太大时,会自动转化为text
大于varchar(255)变为 tinytext
大于varchar(500)变为 text
大于varchar(20000)变为 mediumtext
三、日期和时间类型
DATE3 个字节
DATETIME 8 个字节
TIMESTAMP 4 个字节
TIME 3 个字节
YEAR 1 字节
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)