(资料图片)
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翻译:1118 -行太大。所用表类型的最大行大小(不包括BLOBs)是65535。这包括存储开销,请查看手册。您必须将一些列更改为TEXT类型或BLOBs类型
这个错误我相信大家都遇到过,当数据库里面的字段特别多且每个字段占的存在范围字节也特别大就会有可能出现当前错误,主要原因是行大小超过了65535个字节
MySQL的每个表有4096列的硬限制,但给定表的有效最大值可能更少。确切的列限制取决于几个因素: ①:表的最大行大小约束列的数量(可能还有大小),因为所有列的总长度不能超过此大小。 -- 说明:可能列没达到最大,但行大小已经提前限制了表继续创建字段了②:各个列的存储要求限制了给定最大行大小内的列数。某些数据类型的存储要求取决于存储引擎、存储格式和字符集等因素。 ③:存储引擎可能会施加限制表列计数的其他限制。例如InnoDB每个表的限制为1017列。
①:MySQL表具有65535字节的最大行大小限制,即使存储引擎能够支持更大的行也是如此。在MySQL的设定中单行数据最大能存储65535byte的数据(注意是byte,而不是字符)。②:对于默认的16KB InnoDB页大小,最大行大小略小于8KB 。对于64KB页,最大行大小略小于16KB。如果包含可变长度列(例如:text)的InnoDB行超过最大行大小,InnoDB选择可变长度列进行页外存储。
字符集所占长度: latin1字符集: 一个字母占一字节 gbk字符集: 一个汉字占二字节 utf8(utf8mb3): 一个汉字占三字节 utf8mb4: 一个汉字占四字节(可存储emoji表情)在刚接触MySQL的人设计表时可能出现此方式的创建表: CREATE TABLE IF NOT EXISTS demo_table ( column1 VARCHAR ( 20000 ), column2 VARCHAR ( 20000 ), column3 VARCHAR ( 20000 ), column4 VARCHAR ( 20000 ) ) ENGINE = INNODB CHARACTER SETlatin1;如果这样创建则会直接抛出和文章开头给出的错误一样,这就是我们设计表的时候行大小超过了 65535,我这里都用20000一个字段,4个字段的行大小就直接8万了遇到这样问题我们可以稍加改造,更改列为TEXT可以避免MySQL 65535字节的行大小限制,而InnoDB变长列的页外存储可以避免InnoDB行大小限制。(使用BLOB和TEXT类型都可以页外存储,因为是文本,所以用TEXT) CREATE TABLE IF NOT EXISTS demo_table ( column1 VARCHAR ( 20000 ), column2 VARCHAR ( 20000 ), column3 VARCHAR ( 20000 ), column4 TEXT -- 这个我就用TEXT类型(上面3个字段加起来) ) ENGINE = INNODB CHARACTER SET latin1;-- 注:这里的TEXT类型也占了10个字节
为了可以更好的了解这个行长限制,这里我就利用行长的边界值进行一个说明;行长最大限制65535
注:字段设置允许为NULL时需要占用一个字节注:在varchar类型长度0到255之间(包含255)则需要1个字节记录长度;超过255~65535则需要2个字节记录长度-- 以latin1字符集创建表 CREATE TABLE IF NOT EXISTS test ( t1 VARCHAR ( 65533 ) NOT NULL ) charset latin1;-- 此时t1已经达到test表中行大小的最大值,因为t1字段超过255则需要2个字段记录,所以65533+2等于65535-- 以utf8mb3字符集来创建表(因为utf8mb3是3字节一个字符,所以需要除以三) CREATE TABLE IF NOT EXISTS test ( t1 VARCHAR ( 21844 ) NOT NULL , t2 TINYINT NOT NULL ) charset utf8mb3;-- 因为是utf8mb3,因为三字节占一字符。 所以65533 取模 3 = 21844;所以t1占用21844 为什么是65533取模3,因为t1需要提前预留2个字节记录长度 那21844*3+2=65534;这时还剩余一个字节就分配给t2,因为t2占用一个字节的设置为允许 NULL说明:我们再上面创建表字段后面会跟NOT NULL;那是因为我不设置NOT NULL的话,那就代表可以存入NULL值;但是官方定义可以为NULL的字段需要加一个字节专门记录NULL值-- 这样我就可以成功建表;计算65532(字符长)+2(varchar记录长度)+1(记录为空)=65535 CREATE TABLE IF NOT EXISTS test ( t1 VARCHAR ( 65532 ) ) charset latin1;
注:具体介绍看MySQL官网说明
上一篇:世界关注:男孩六一表演化身行走表情包 网友:C位不是没有道理的
下一篇:最后一页
一:引言1118-Rowsizetoolarge Themaximumrowsizefortheusedtabletype,notcountingBLOBs,is65535 Thisincludesstorageoverhead,checkthe
A股房企退市名单再添一员。5月31日晚间,*ST嘉凯(000918)公告,截至5月31日,公司股票收盘价为0 49元 股,
克罗地亚拟修订酿酒条例
1、sample就是作者要卖自己的一个本子或是别的,先在网上放出几页预览图(通常清晰度不高+有水印)给大家看
1、对抗路:惩戒曜、马超、惩戒暗信、狂暴老夫子、狂暴ad梦奇、孙策、惩戒亚瑟、八戒、夏侯惇。2、2、发育
00:115月31日,南部战区新闻发言人张南东陆军大校表示,5月26日,中国人民解放军海军17舰编队位南海进行例
5月21日,暌违许久的2023“丝绸之路”宁夏·银川马拉松赛盛大开启,来自全球的2 5万名跑友齐聚塞上湖城...
昨日,国家金融监管管理总局官网披露的信息显示,银保监会四川监管局核准柳林四川省唯品富邦消费金融有限公
北京时间5月31日,据“曼彻斯特晚报”报道,曼城球星德布劳内近期参与了一段官方视频,其间他谈到了自己...
中新社北京5月31日电(记者王恩博)中国国家统计局5月31日公布,5月份,中国制造业采购经理指数(PMI)为48 8%
1、海上生明月,天涯共此时。供桌庭院中,祭月共举杯。团圆喜笑颜,赏月食甜饼。月圆人也圆,酒香花儿艳。
为深入实施暖警工程,落实从优待警措施,关爱民辅警子女成长,提升民辅警的家庭幸福感、警营归属感和职业荣
江苏江阴农村商业银行股份有限公司(证券简称:江阴银行,证券代码:002807,以下简称江阴农商银行)成立于20
5月29日,片仔癀泰安体验馆积极践行推广片仔癀品牌中药文化,为泰安银行高端客户举办片仔癀品牌文化主题推
大和相信低融资成本将会继续支撑中广核电力(01816)今年的盈利增长。
【南方区域用电负荷创今年以来新高南方电网全面备战度夏“大考”】据国资委网站,5月以来,南方区域用电...
佛山蕲春商会二零二三新春团拜会万象更新辞旧岁,一元复始又新春,新春佳节互祝愿,畅叙乡情增友谊。2023年
5月30日,工银创新成长混合A最新单位净值为0 7148元,累计净值为0 7148元,较前一交易日上涨0 86%。历史数
北京时间5月31日消息,来自名记Woj的报道称,鲍勃-迈尔斯确认,他将辞去勇士队篮球运营总裁兼总经理的职位
房贷还款一般是需要按照房贷合同约定进行还的,但也可以提前还款,那么房贷为什么8年还清最合适?
相信目前很多小伙伴对于区块链技术有什么特点都比较感兴趣,那么小搜今天在网上也是收集了一些与区块链技术
1、镀锌板是指表面镀有一层锌的钢板。2、镀锌是一种经常采用的经济而有效的防腐方法,全世界锌产量的一半左
央视网消息:神舟十六号载人飞船是中国空间站应用与发展新阶段的首发载人飞船,也是中国开展的第11次载人飞
1、上海话差不多意思就是,他在和我攀比,看谁有本事大多指没有用语言而是用行动来做的竞争吧。本文到此分享
来为大家解答以上的问题。曲棍球明星,棍球明星介绍这个很多人还不知道,现在让我们一起来看看吧!1、曲棍球
X 关闭
X 关闭