Mysql 报Row size too large 65535 的原因及解决方法

报错信息: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的字段类型用得太多了。

确实是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 的原因及解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • 解决Mysql服务器启动时报错问题的方法

    一.概述 文章主要介绍因为启动mysql服务报错引发的问题:"ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid)",顺带扩充一些其它的知识点,当前版本是red hat 6,mysql 5.6. 二.步骤 报错的源头 问题解决 1.权限 报错的源头就是它了,一般这种问题首先会想到的就是权限问题,就是/var/lib/mysql该文件夹的权限 上图可以看到my

  • mysql登录报错提示:ERROR 1045 (28000)的解决方法

    本文分析了mysql登录报错提示:ERROR 1045 (28000)的解决方法.分享给大家供大家参考,具体如下: 一.问题: 公司linux系统的mysql数据库root用户设置过密码,但常常用命令'mysql -u root -p'登录报错,有时又能登录.登录报错信息为: [root@localhost ~]# mysql -u root -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localho

  • mysql服务无法启动报错误1067解决方法(mysql启动错误1067 )

    试了谷歌到的几种方法,都没有解决,然后突然想起在启动apache的时候,iis的端口占用情况(因为我的apache也使用了80端口),所以  打开命令行 netstat -aon|findstr "3306" 结果显示 默默的在内心深处骂了一句"靠", 果然是端口占用,然后,顺藤摸瓜 tasklist|findstr "416" 结果显示 不得不联想到,优酷的攻城狮们的mysql数据库绝对不是使用的默认3306端口,然后杀掉explorer.ex

  • linux下 root 登录 MySQL 报错的问题

    最近在centOS 7上,通过yum安装了mysql,安装成功后,使用root登录,出现了如下报错: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) mysql版本为:Ver 14.14 Distrib 5.7.10, for Linux(X86_64) using EditLine wrapper 然而实际上并没有进行过root密码设置(不知道是不是安装过程有被忽略的地方?).

  • Mysql联合查询UNION和Order by同时使用报错问题的解决办法

    因此,常常出现这样的错误 复制代码 代码如下: select * from [IND] where INDID>10unionselect * from [IND] where INDID<9 目前为止,还没有出现问 之后,也许有人会用到类似的查询 复制代码 代码如下: select * from [IND] where INDID>10 order by INDID descunionselect * from [IND] where INDID<9 order by INDID

  • MyEclipse连接MySQL数据库报错解决办法

    我们现在一般网站都是利用的MySQL数据库搭建网站的,但是在网上看到很多网友吐槽数据库连接不上的问题,现在我就结合相关资料向提出一些我个人的见解,希望对大家解决问题有帮助. 一般MySQL连接不上,可能有两大原因:1.MyEclipse配置错误 2.MySQL配置不当. 一.我们一般的连接步骤如下: 1.在MyEclipse中连接MySQL数据库:依次点击window-->show view-->other-->MyEclipse Database-->DB Browser 图一:

  • mysql报错:MySQL server version for the right syntax to use near type=InnoDB的解决方法

    本文实例讲述了mysql报错:MySQL server version for the right syntax to use near type=InnoDB的解决方法.分享给大家供大家参考,具体如下: 一.问题: 工作中使用sql语句建表时,mysql报了如下错误: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right

  • MySQL 启动报错:File ./mysql-bin.index not found (Errcode: 13)

    Linux下安装初始化完MySQL数据库之后,使用mysqld_safe启动mysql数据库,如下发现,启动失败 [root@SVNServer bin]# ./mysqld_safe –user=mysql& 或 [root@SVNServer bin]# /etc/init.d/mysqld start Starting MySQL. ERROR! The server quit without updating PID file (/data/mysql/AY140208160934776

  • MYSQL拒绝访问报错not allowed to connect

    mysql报如下错误,截取部分, message from server: "Host '****' is not allowed to connect to this MySQL server 1:在登录mysql服务器 2:执行:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION //赋予任何主机访问数据的权限 3:FLUSH PRIVILEGES //修改生效 这样就可以在其它任何的主机上以root身份登录啦!

  • mysql导入sql文件报错 ERROR 2013 2006 2002

    今天导入sql总是提示错误 复制代码 代码如下: ERROR 2013 (HY000): Lost connection to MySQL server during query ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/va

  • 开启bin-log日志mysql报错的解决方法

    创建存储过程时 出错信息: 复制代码 代码如下: ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) 原因: 复制代码

随机推荐