3.1 测试UTF8字符集创建一个只有一个字段的表,字段长度为65535 结果居然报错了,提示最大长度只能是21845,也就是65535/3的量,
/* 测试单字段长度 上限*/但是改为21845依旧报错,原因你仔细品(提示varchar)
CREATE TABLE test_c1(
c1 VARCHAR(65535)
) ENGINE=INNODB CHARACTER SET utf8;
/* 执行结果 */
错误代码: 1074
Column length too big for column 'c1' (max = 21845); use BLOB or TEXT instead
CREATE TABLE test_c1(/* 执行结果依旧报错 */
c1 VARCHAR(21845)
) ENGINE=INNODB CHARACTER SET utf8;
错误代码: 1118
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 test_c1(共 0 行受到影响有图有真相
c1 VARCHAR(21844)
) ENGINE=INNODB CHARACTER SET utf8;
/* 终于成功了*/
查询:create table test_c1( c1 varchar(21844) ) engine=innodb character set utf8

文章插图
3.2 测试latin字符集因为utf8编码占3位,因此最大长度只能是21845(-1),那么latin字符集是不是就能达到65535了
测试如下
CREATE TABLE test_c1(
c1 VARCHAR(65535)
) ENGINE=INNODB CHARACTER SET latin1
/* 结果依旧失望 */
错误代码: 1118
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在想想上面的情况,一直减下去,发现65532即可正常(原因你继续品就明白了)CREATE TABLE test_c1(
c1 VARCHAR(65532)
) ENGINE=INNODB CHARACTER SET latin1;
/* 终于成功了 */
<n>查询:create table test_c1( c1 varchar(65532) ) engine=innodb character set latin1共 0 行受到影响给真相
文章插图
3. 小结实践出真知,任何人说的知识点都要思考,必要的时候自己检验一番 。
表字段限制

文章插图
表字段长度限制

文章插图
在此知识给个匆忙的小结,其中原因不懂的可以查看官方文档,也是详细的测试,也可以加群一起讨论 。
转自:https://www.cnblogs.com/gjc592/p/12609153.html
推荐阅读
- MySQL数据库备份之主从同步配置
- 虚拟主机能用mysql么
- 玫瑰花茶搭配,玫瑰花茶到底是什么茶
- 女生长期戴眼镜与不戴眼镜,到底有什么区别?
- 茉莉茶能造假是不是,茉莉花茶到底是不是花茶
- 苦荞茶和柠檬玫瑰花茶,玫瑰花茶到底是什么茶
- 中国茶叶品种千千万,到底哪种茶最好喝呢_听听老茶客怎么说
- python3快速爬取房源信息,并存入mysql数据库,超详细
- 一文搞懂MySQL兄弟数据库MariaDB的安装和使用
- MySQL 全文索引实现一个简单版搜索引擎
