数据溢出-varchar类型

数据溢出
一、varchar(65535)
1、在charset=latin1,因为有额外的开销,实际只能存65532

CREATE table demo(
a varchar(65535)
)charset=latin1 engine=innodb;
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 BLOB


2、varchar(65535)是指65535字节,但在create时,varchar(N) N 是指多少个字符。
例如:

CREATE table demo2(
a varchar(21844)  -- 超过该数字,就会报错,因为utf8,一个字符,三个字节  21844*3=65532
)charset=utf8 engine=innodb;

3、varchar(65535)是指所有varchar列的长度总和超过这个长度
例如:

CREATE table demo2(
a varchar(21844),
b varchar(21844)
)charset=utf8 engine=innodb;
-- 脚本报错,总计超出 21844 字符
原文地址:https://www.cnblogs.com/yancun8141/p/11213580.html