Mysql报Rowsizetoolarge65535的原因及解决⽅法
报错信息:Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535
向mysql的表插件⼀个字段类型为text时,或修改⼀个字段类型为text时,报出上⾯的错误。其实我对这个错误的原因理解也不是很深,给出⼀些我查到的解释吧
⼤意是数据表中有⼀个设定长度为64K的字段索引,当表中字段(不知道是字段名字还是什么)不能超过这个长度,65,535所说明的是针对的是整个表的⾮⼤字段类型的字段的bytes总合。(⽹上查到的)
我⾃⼰的理解(也不是很清楚了,⼤家指出来吧):
我的理解跟上查到最后⼀句话的意思差不多,就是⾮⼤字段类型的字段的bytes总和⼤于64K了,这个字段的bytes总和是什么呢?我还是当他理解成字段的名字长总的总和吧。⾮⼤字段是指那些字段呢,我觉得是varchar字段类型的字段,他们的名字总和⼤于64K,超出mysql的检索⼤⼩存储空间时就会报错。
varchar我来简单说下吧,在旧版5版本前varchar 最⼤存储字符数是255 (说法不算科学有兴趣的⾃⼰查),在5版后 varchar 就是可变长度 ,就是按实际存储数据的多少去划分占⽤的存储空间,⽐如varchar类型内的数据有50个那么它占⽤的存储空间可能就是51个有1个是占位符⽤于记录存了多少个字
符。(也许不是字段名字占了64k,⽽是这个字段内记录占位长度的太多了,超过了64k这个值)就是说,你⾃⼰看看是不是你数据表⾥⽤varchar的字段类型⽤得太多了。
mysql下载不了怎么办
确实是varchar⽤得太多了,怎么办呢,其实上⾯报错的语句就有说明,可以将属性转为text 或 blobs 。⾏不⾏你们⾃⼰试下吧。
为什么我的数据表上有那么多varchar呢,因为他是实际长度的感觉可以省点存储空间,如给varchar(300)但我实际在这个字段存了10个字,那其实也只是占⽤了11个字符存储空间,最⼤到300个字符。
我的解决⽅法:
  将表中varchar(N) 中N设定⼩于255的属性的字段,修改属性为tinytext 。tinytext 在存储时总是占⽤255个字符。是固定的占着,最⼤能保存的字符也只有255个。所以如果varchar(N) 这个N值特别少就可以⽤tinytext进⾏代替。char这个⼤家⾃⼰考虑下能不能⽤吧。
以上所述是⼩编给⼤家介绍的Mysql 报Row size too large 65535 的原因及解决⽅法,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。