建表语句报如下错误:

CREATE TABLE test_1 (

Fid bigint(20) unsigned NOT NULL,

Ftype tinyint(4) unsigned NOT NULL,

Flist varchar(65532) DEFAULT NULL,

Fstatus tinyint(3) unsigned DEFAULT '0',

Ftime bigint unsigned DEFAULT '0',

Faddtime bigint unsigned DEFAULT '0',

PRIMARY KEY (Fid,Ftype)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

建表报如下错误:

ERROR 1074 (42000): Column length too big for column 'Flist' (max = 21845); use BLOB or TEXT instead

原因分析

虽然知道mysql建表的时候列长度有65535的限制,但是一直没有时间整理这个问题,接着今天整理一下。

ERROR 1074 (42000): Column length too big for column 'Flist' (max = 21845); use BLOB or TEXT instead

从上面的报错我们知道Flist列指定值不能大于21845 字节(mysql官方手册中定义,创建表的字段长度限制为65535 bytes,这个是指所有列指定的长度和,当然不包括TEXT和BLOB类型的字段)。

还有一点我们需要注意的是我们定义列长度时指定的长度单位为字符,上面提到的65535限制的单位为字节。不同字符集下每个字符占用的字节数不同,utf8下每个字符占用3个字节(65535/3=21845),gbk下每个字符占用2个字节(65535/2=32767),latin1字符集下一个字符占用一个字节。

操作验证

实验1:

CREATE TABLE test_1 (

Flist varchar(21845) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ERROR 1118 (42000): 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

##我们发现给表指定一个列,

列长度为21845字符(utf8下最大长度限制),但是建表依然报错。这是因为还有别的一些开销,

所以我们不能指定列长度为最大限制21845(测试发现指定长度为21844后建表成功)

实验2:

CREATE TABLE test_1 (

Fid bigint(20) unsigned NOT NULL,

Ftype tinyint(4) unsigned NOT NULL,

Flist varchar(21844) DEFAULT NULL,

Fstatus tinyint(3) unsigned DEFAULT '0',

Ftime bigint unsigned DEFAULT '0',

Faddtime bigint unsigned DEFAULT '0',

PRIMARY KEY (Fid,Ftype)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

报如下错误:

ERROR 1118 (42000): 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

##虽然Flist 长度指定为21844,但是因为还

有其他非TEXT和BLOB字段存在,所以报错。这是因为65535长度限制是针对表中所有列的长

度和的最大限制,如果列的长度和超过该值,建表依然会报错。(除了TEXT和BLOB类型的字

段的)

mysql column legnth too big for_Column length too big for column 'Flist' (max = 21845);相关推荐

  1. mysql delete删除列,在MySQL中删除我的Key列 (Delete my Key column in MySQL)

    英文原文 those are not columns you can modify, they are metadata propertes of each user column the datab ...

  2. mysql 22001_mysql ERROR 1264 (22003): Out of range value for column 'x' at row 1 错误

    mysql> insert into t1 values (-129), (-128), (127),(128);ERROR 1264 (22003): Out of range value f ...

  3. mysql的column是什么意思_column意思 数据库中的column是什么意思

    column什么意思啊回答和翻译如下: Column. 列. Column()函数是什么意思 SQL语句中column的意思和常用法 是怎么的 ???sql:column() 函数 (XQuery) ...

  4. oracle drop column 多个,3000W记录,alter table drop column很慢

    最初由 yzm2008 发布 [B]Alter table T set unused(COLUMN) 和 drop column有什么区别吗? [/B] SET UNUSED Clause Speci ...

  5. mysql错误码1709_MySQL5.6出现ERROR 1709 (HY000): Index column size too large问题的解决方法...

    一.问题 mysql 5.6 出现如下问题: [ERROR 1709 (HY000): Index column size too large. The maximum column size is ...

  6. mysql保存数据提示:Out of range value for column错误

    在开发的时候突然遇到这个问题,一时不知道为啥了 Out of range value test12345 for column 'xx' at row 1 解决办法 直接修改xx字段的长度 在MySq ...

  7. java mysql报表T加1_MySQL报错: java.sql.SQLException: Column count doesn't match value count at row 1...

    项目使用了Spring和MyBatis,在往mysql数据库里插入数据时报错如下: org.springframework.jdbc.BadSqlGrammarException: ### Error ...

  8. mysql 索引过长1071-max key length is 767 byte

    原因 数据库表采用utf8编码,其中varchar(255)的column进行了唯一键索引 而mysql默认情况下单个列的索引不能超过767位(不同版本可能存在差异) 于是utf8字符编码下,255* ...

  9. mysql字符串处理函数left()、length()使用

    left(code, 8)表示取code字段从左截取8位: length(code)=10表示code字段的长度是10位 select * from ( SELECT code as id ,name ...

最新文章

  1. oracle中lock的解释
  2. 9月,最值得看的30篇肠道健康文献!
  3. 表中查询重复的数据,如何通过sql语句查询?
  4. 梭子鱼任命James Forbes-May为亚太区销售副总裁
  5. 【RFID】基于MATLAB的RFID 系统的空中接口过程以及防碰撞算法仿真
  6. Java之美[从菜鸟到高手演变]系列之博文阅读导航
  7. 【十问十答】粒子群算法(PSO)
  8. java机试_java机试要点
  9. oracle11g 导出表报EXP-00011:table不存在。
  10. sql注入***的各种注入方法
  11. 【报告分享】抖音短视频营销之“梗”的应用(借梗造梗13招).pdf
  12. 【JavaScript 笔记 】— 基础语法(数据类型、字符串、数组、对象、Map、Set、iterable、函数基础)
  13. noi题库1.1~1.6答案
  14. rlm sql mysql.so_安装freeradius
  15. Hibernate Hierachy
  16. 三星android5.0基带,三星手机刷入基带详细图文操作教程
  17. SCI写作之方法部分method
  18. 12306所有车次及时刻表的爬取中
  19. MY9221 使用心得
  20. 高斯模糊之canvas实现

热门文章

  1. 计算机领域hpec会议,2018 IEEE High Performance extreme Computing Conference HPEC
  2. python pymysql_python使用pymysql实现操作mysql
  3. java appender_log4j的Appenders配置方法
  4. AVR单片机计算器C语言源程序,一个基于AVR单片机的计算器程序.doc
  5. chrome浏览器遭eFast浏览器恶意软件删除取代
  6. ajax提交加载loading图标遮罩层不显示
  7. php上传图片管理系统,php 登录操作的文件上传管理系统
  8. Java核心类库篇6——IO
  9. 计算机一级某学校师资情况表,2011年计算机一级考试MS OFFICE上机考试指导
  10. python跨文件复制sheet_Python办公自动化-工作表复制(可跨文件)