创建数据表的时候 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; 
posted @ 2020-03-14 20:59  萝卜er  阅读(271)  评论(0编辑  收藏  举报