资讯专栏INFORMATION COLUMN

Column length too big for column 'Flist'

wemall / 2463人阅读

摘要:建表语句报如下错误建表报如下错误原因分析虽然知道建表的时候列长度有的限制,但是一直没有时间整理这个问题,接着今天整理一下。这是因为长度限制是针对表中所有列的长度和的最大限制,如果列的长度和超过该值,建表依然会报错。

建表语句报如下错误:
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类型的字
段的)    

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/46977.html

相关文章

  • MySQL null与not null和null与空值''的区别

    摘要:建议列属性尽量为长度验证注意空值的之间是没有空格的。注意事项在进行统计某列的记录数的时候,如果采用的值,系统会自动忽略掉,但是空值是会进行统计到其中的。插入空值,则会出现对于空值的判断到底是使用还是要根据实际业务来进行区分。 相信很多用了MySQL很久的人,对这两个字段属性的概念还不是很清楚,一般会有以下疑问: 我字段类型是not null,为什么我可以插入空值 为毛not null...

    leanote 评论0 收藏0
  • Out of range value for column 'ref_time'

    摘要:今天用开发项目时遇到上述问题。后来解决的时候发现居然是要保存的时间操作出范围了。但它将型值转换成时出错了,因为这个值已经大于类型的最大值了。所以数据库会报错上述错误。解决办法之一就是将数据库中的类型改成类型这样就会解决上上述问题。 今天用springMVC+Mybatis开发项目时遇到上述问题。后来解决的时候发现居然是要保存的时间操作出范围了。 1.保存的时间值为:26386015...

    ztyzz 评论0 收藏0
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据

    摘要:添加一个使用接收请求添加用户微服务启动类链接数据库通过编写数据库访问。 SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问 - 一、大致介绍 1、本章节开始讲解一下访问数据库的操作,不过其实这还不算是SpringCloud的范畴,应该说是SpringBoot的操作范畴,这些就先抛开了,我们就还是讲解数据库的操作; 2、JpaRep...

    ethernet 评论0 收藏0
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据

    摘要:添加一个使用接收请求添加用户微服务启动类链接数据库通过编写数据库访问。 SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问 - 一、大致介绍 1、本章节开始讲解一下访问数据库的操作,不过其实这还不算是SpringCloud的范畴,应该说是SpringBoot的操作范畴,这些就先抛开了,我们就还是讲解数据库的操作; 2、JpaRep...

    AndroidTraveler 评论0 收藏0
  • Please read 'Security' ... to find out h

    摘要:错误信息错误原因是处于安全考虑,默认拒绝以账号启动服务解决方法有以下几种通过在命令后面加上进行强制使用账号启动。 错误信息:[ERROR] Fatal error: Please read Security section of the manual to find out how to run mysqld as root! 错误原因是mysql处于安全考虑,默认拒绝以root账号启...

    haobowd 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<