转载地址 字段长度 https://segmentfault.com/q/1010000003040054
65535 http://www.cnblogs.com/zhoujinyi/p/3178558.html
总结:
1. 字段的长度指的是 无论是1个数字,字母,汉字,都1
CREATE TABLE `test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`content` varchar(5) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
INSERT INTO `test`(`content`) VALUES ('123456');
INSERT INTO `test`(`content`) VALUES ('中国人民银行');
SELECT * FROM `test`;
返回:
id content
1 12345
2 中国人民银
可见,varchar(5)能存储5个字符,不管是数字,字母,还是汉字.
2. 65535是utf单行最大长度, mysql在创建数据表的时候会检测所有的字段累计的字节数,
eg:
单个字段的长度是 10000, 字节数是30000 小于65535
单行字段长度是10000*3 字节数是90000 大于65535 所以报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
CREATE TABLE tb_test ( -> recordid varchar(32) NOT NULL, -> areaShow varchar(10000) DEFAULT NULL, -> areaShow1 varchar(10000) DEFAULT NULL, -> areaShow2 varchar(10000) DEFAULT NULL, -> PRIMARY KEY (recordid) -> ) ENGINE=INNODB DEFAULT CHARSET=utf8;