创建数据表的时候 varchar可变类型的奇怪现象
Posted tobemaster
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建数据表的时候 varchar可变类型的奇怪现象相关的知识,希望对你有一定的参考价值。
varchar的长度最大是65535字节
创建的时候varchar(n) 这里面的n是字符长度
所以编码格式不一样,n的最大值也不一样
编码格式为Latin1时 n理论最大值为 65535
编码格式为gbk时 n理论最大值为 65535/2 = 32767
编码格式为utf8时 n理论最大值为 65535/3 = 21845
当设置的n接近理论最大值的时候,会报错提示
Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
小于最大值一点儿(几或者几十),会创建成功varchar类型的
接近最大值创建不成功
但当超过理论最大值的时候,会创建成功为mediumtext类型的值
神不神奇???
例子
CREATE TABLE test1 ( a varchar(65500) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE test2 ( a varchar(65535) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE test3 ( a varchar(65536) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
以上是关于创建数据表的时候 varchar可变类型的奇怪现象的主要内容,如果未能解决你的问题,请参考以下文章