`
xitonga
  • 浏览: 585960 次
文章分类
社区版块
存档分类
最新评论

[MySQL 错误]ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not

 
阅读更多

朋友发过来一个SQL,,让我执行以下:

CREATE TABLE `ttt` (
	`id` DOUBLE ,
	`select_type` VARCHAR (57),
	`table` VARCHAR (192),
	`type` VARCHAR (30),
	`possible_keys` VARCHAR (22288),
	`key` VARCHAR (192),
	`key_len` VARCHAR (22288),
	`ref` VARCHAR (3072),
	`rows` DOUBLE ,
	`Extra` VARCHAR (765)
); 
INSERT INTO `ttt` (`id`, `select_type`, `table`, `type`, `possible_keys`, `key`, `key_len`, `ref`, `rows`, `Extra`) VALUES('1','PRIMARY','aaa','index',NULL,'email_2','51',NULL,'5','Using where; Using index');
INSERT INTO `ttt` (`id`, `select_type`, `table`, `type`, `possible_keys`, `key`, `key_len`, `ref`, `rows`, `Extra`) VALUES('2','DEPENDENT SUBQUERY','bbb','ref','id','id','5','test.aaa.id','1','Using where; Using index');

执行第一句建表的时候就卡住了,报错如下:

mysql> CREATE TABLE `ttt` (
    -> `id` DOUBLE ,
    -> `select_type` VARCHAR (57),
    -> `table` VARCHAR (192),
    -> `type` VARCHAR (30),
    -> `possible_keys` VARCHAR (12288),
    -> `key` VARCHAR (192),
    -> `key_len` VARCHAR (12288),
    -> `ref` VARCHAR (3072),
    -> `rows` DOUBLE ,
    -> `Extra` VARCHAR (765)
    -> ); 
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
mysql>

看了提示,表的2个varchar字段长度设置过长了,需要改成text,blob之类的类型,修改之后执行成功了:

mysql> use test;
Database changed
mysql> 
mysql> CREATE TABLE `ttt` (
    -> `id` DOUBLE ,
    -> `select_type` VARCHAR (57),
    -> `table` VARCHAR (192),
    -> `type` VARCHAR (30),
    -> `possible_keys` TEXT,
    -> `key` VARCHAR (192),
    -> `key_len`  TEXT,
    -> `ref` VARCHAR (3072),
    -> `rows` DOUBLE ,
    -> `Extra` VARCHAR (765)
    -> ); 
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO `ttt` (`id`, `select_type`, `table`, `type`, `possible_keys`, `key`, `key_len`, `ref`, `rows`, `Extra`) VALUES('1','PRIMARY','aaa','index',NULL,'email_2','51',NULL,'5','Using where; Using index');
Query OK, 1 row affected (0.04 sec)

mysql> INSERT INTO `ttt` (`id`, `select_type`, `table`, `type`, `possible_keys`, `key`, `key_len`, `ref`, `rows`, `Extra`) VALUES('2','DEPENDENT SUBQUERY','bbb','ref','id','id','5','test.aaa.id','1','Using where; Using index');
Query OK, 1 row affected (0.00 sec)

mysql> select * from ttt;
+------+--------------------+-------+-------+---------------+---------+---------+-------------+------+--------------------------+
| id   | select_type        | table | type  | possible_keys | key     | key_len | ref         | rows | Extra                    |
+------+--------------------+-------+-------+---------------+---------+---------+-------------+------+--------------------------+
|    1 | PRIMARY            | aaa   | index | NULL          | email_2 | 51      | NULL        |    5 | Using where; Using index |
|    2 | DEPENDENT SUBQUERY | bbb   | ref   | id            | id      | 5       | test.aaa.id |    1 | Using where; Using index |
+------+--------------------+-------+-------+---------------+---------+---------+-------------+------+--------------------------+
2 rows in set (0.00 sec)

疑惑:varchar(N),这个N不是最大为65535吗?为什么设置成12288就会报错?12288比65535小很多啊。

有问题上官网:http://dev.mysql.com/doc/refman/5.6/en/char.html

In contrast toCHAR,VARCHARvalues are stored as a 1-byte or 2-byte length prefix plus data. The length prefix indicates the number of bytes in the value. A column uses one length byte if values require no more than 255 bytes, two length bytes if values may require more than 255 bytes.

原来有N有255这样一个坎啊,超过了N的意义就不一样了。


后续测试1 ,朋友木木说是字符集的问题,那么我就执行之前设置下字符集,不过还是报错,但是我在SQLyog工具的窗口里面执行是成功(工具里面自动转变成mediumtext类型了)。


mysql> set names utf8;
Query OK, 0 rows affected (0.00 sec)


mysql> DROP TABLE ttt;
ERROR 1051 (42S02): Unknown table 'test.ttt'
mysql> CREATE TABLE `ttt` (
  -> `id` DOUBLE ,
  -> `select_type` VARCHAR (57),
  -> `table` VARCHAR (192),
  -> `type` VARCHAR (65535),
  -> `key` VARCHAR(20),
  -> `possible_keys` VARCHAR (100),
  -> `key_len` VARCHAR (65535),
  -> `ref` VARCHAR (11),
  -> `rows` DOUBLE ,
  -> `Extra` VARCHAR (765)
  -> );
ERROR 1074 (42000): Column length too big for column 'type' (max = 21845); use BLOB or TEXT instead
mysql> set names gbk;
Query OK, 0 rows affected (0.00 sec)


mysql> DROP TABLE ttt;
ERROR 1051 (42S02): Unknown table 'test.ttt'
mysql> CREATE TABLE `ttt` (
  -> `id` DOUBLE ,
  -> `select_type` VARCHAR (57),
  -> `table` VARCHAR (192),
  -> `type` VARCHAR (65535),
  -> `key` VARCHAR(20),
  -> `possible_keys` VARCHAR (100),
  -> `key_len` VARCHAR (65535),
  -> `ref` VARCHAR (11),
  -> `rows` DOUBLE ,
  -> `Extra` VARCHAR (765)
  -> );
ERROR 1074 (42000): Column length too big for column 'type' (max = 21845); use BLOB or TEXT instead
mysql>

最后总结:这个可能是超过 一个表 关于 非十六进制字段 64k的限制了。

上官网:http://dev.mysql.com/doc/refman/5.5/en/column-count-limit.html

Every table (regardless of storage engine) has a maximum row size of 65,535 bytes. Storage engines may place additional constraints on this limit, reducing the effective maximum row size.

65,535所说明的是针对的是整个表的非大字段类型的字段的bytes总合。


分享到:
评论

相关推荐

    大学生创新创业训练计划经验分享.zip

    大学生创新创业训练计划(以下简称为“大创计划”)是一项旨在提升大学生创新能力和创业精神的实践活动。通过这项计划,学生可以在导师的指导下,自主开展研究性学习和创业实践。下面我将分享一些关于大创计划的经验和建议。

    node-v12.22.3-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    毕业设计-The coding solutions of Leetcode and 剑指Offer using .zip

    这里为你收集整理了关于毕业设计、课程设计可参考借鉴的资料一份,质量非常高,如果你投入时间去研究几天相信肯定对你有很大的帮助。到时候你会回来感谢我的。 本资源是经过本地编译测试、可打开、可运行的项目、文件或源码,可以用于毕业设计、课程设计的应用、参考和学习需求,请放心下载。 祝愿你在这个毕业设计项目中取得巨大进步,顺利毕业! 但还需强调一下,这些项目源码仅供学习和研究之用。在使用这些资源时,请务必遵守学术诚信原则和相关法律法规,不得将其用于任何商业目的或侵犯他人权益的行为。对于任何因使用本资源而导致的问题,包括但不限于数据丢失、系统崩溃或安全漏洞,风险自担哦!

    【微信小程序毕业设计】宠物店商城系统开发项目(源码+演示视频+说明).rar

    【微信小程序毕业设计】宠物店商城系统开发项目(源码+演示视频+说明).rar 【项目技术】 微信小程序开发工具+java后端+mysql 【演示视频-编号:282】 https://pan.quark.cn/s/cb634e7c02b5 【实现功能】 本系统实现的是和宠物相关的信息管理和发布,加入了商品销售的功能。操作角色为管理员和用户、商家,管理员的功能为用户管理、商家管理、宠物分类管理、宠物信息管理、商品分类管理、宠物用品管理、项目类型管理、服务项目管理、宠物日志管理、订单管理等;用户的功能为购买宠物、商品、预约服务发表日志管理订单等。商家功能为提供宠物、宠物用品、宠物服务,管理订单和服务预约等。

    雷迪森的工具包(95分以上课程大作业).zip

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、高效的企业级应用。 1. Spring框架:Spring是一个轻量级的Java开发框架,提供了丰富的功能和模块,用于开发企业级应用。它包括IoC(Inverse of Control,控制反转)容器、AOP(Aspect-Oriented Programming,面向切面编程)等特性,可以简化开发过程、提高代码的可维护性和可测试性。 2. Spring MVC框架:Spring MVC是基于Spring框架的Web框架,用于开发Web应用程序。它采用MVC(Model-View-Controller,模型-视图-控制器)的架构模式,将应用程序分为模型层、视图层和控制器层,提供了处理请求、渲染视图和管理流程的功能。 3. MyBatis框架:MyBatis是一个持久层框架,用于与数据库进行交互。它提供了一种将数据库操作与Java对象映射起来的方式,避免了手动编写繁琐的SQL语句,并提供了事务管理和缓存等功能,简化了数据库访问的过程

    node-v9.10.1.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于B2C的网上拍卖系统_秒杀与竞价.zip

    基于B2C的网上拍卖系统主要用于帮助人们应用互联网方便快捷买到自己所中意的商品,并参与到秒杀与竞拍当中。 主要功能包括: 1.前台模块 (1)普通用户登录/注册。 (2)分类查看商品(普通商品与促销商品) (3)查看商品详细信息 (4)查看秒杀商品 (5)查看竞拍商品 (6)将商品加入购物车 (7)购买,结算功能 (8)留言 2.后台模块 (1)修改密码 (2)商品管理: -- 编辑/删除 -- 设置/取消促销 (3)秒杀商品:设置/取消秒杀 (4)竞拍商品:设置/取消竞拍 (5)订单管理:查看订单 (5)留言管理:查看/删除留言 项目访问路径: 前台:http://localhost:8080/sale 后台:http://localhost:8080/sale/user/adminlogin

    【前端素材】大数据-政务大数据共享交换平台.zip

    大数据技术指的是用于处理和分析大规模数据集的技术和工具。以下是一些常见的大数据技术和工具: Hadoop:Apache Hadoop是一个用于分布式存储和处理大规模数据的开源框架。它包括Hadoop Distributed File System(HDFS)用于数据存储和MapReduce用于数据处理。 Spark:Apache Spark是一个快速、通用的集群计算系统,提供了比MapReduce更快的数据处理能力。它支持内存计算和更多复杂的数据处理流程。 NoSQL数据库:NoSQL数据库(如MongoDB、Cassandra等)则更适用于处理这类数据。 数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:数据湖是一个存储结构化和非结构化数据的存储池,用于支持数据分析和机器学习应用。 机器学习:大数据技术也广泛应用于机器学习领域,支持大规模数据的模型训练和预测分析。 流式处理:针对实时数据处理需求,流式处理技术(如Apache Kafka、Apache Flink)可以实时。

    【前端素材】大数据-气象预报大数据平台.zip

    大数据技术指的是用于处理和分析大规模数据集的技术和工具。以下是一些常见的大数据技术和工具: Hadoop:Apache Hadoop是一个用于分布式存储和处理大规模数据的开源框架。它包括Hadoop Distributed File System(HDFS)用于数据存储和MapReduce用于数据处理。 Spark:Apache Spark是一个快速、通用的集群计算系统,提供了比MapReduce更快的数据处理能力。它支持内存计算和更多复杂的数据处理流程。 NoSQL数据库:NoSQL数据库(如MongoDB、Cassandra等)则更适用于处理这类数据。 数据仓库:数据仓库是一个用于集成和分析大规模数据的存储系统,一些知名的数据仓库包括Snowflake、Amazon Redshift等。 数据湖:数据湖是一个存储结构化和非结构化数据的存储池,用于支持数据分析和机器学习应用。 机器学习:大数据技术也广泛应用于机器学习领域,支持大规模数据的模型训练和预测分析。 流式处理:针对实时数据处理需求,流式处理技术(如Apache Kafka、Apache Flink)可以实时。

    数学模型算法多目标决策分析方法.pptx

    数学模型算法

    ############ 光电传感器的描述

    光电传感器

    node-v12.17.0-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    Web开发工具和方法课程的学术项目Java、Spring、Hibernate、Angular

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、高效的企业级应用。 1. Spring框架:Spring是一个轻量级的Java开发框架,提供了丰富的功能和模块,用于开发企业级应用。它包括IoC(Inverse of Control,控制反转)容器、AOP(Aspect-Oriented Programming,面向切面编程)等特性,可以简化开发过程、提高代码的可维护性和可测试性。 2. Spring MVC框架:Spring MVC是基于Spring框架的Web框架,用于开发Web应用程序。它采用MVC(Model-View-Controller,模型-视图-控制器)的架构模式,将应用程序分为模型层、视图层和控制器层,提供了处理请求、渲染视图和管理流程的功能。 3. MyBatis框架:MyBatis是一个持久层框架,用于与数据库进行交互。它提供了一种将数据库操作与Java对象映射起来的方式,避免了手动编写繁琐的SQL语句,并提供了事务管理和缓存等功能,简化了数据库访问的过程

    云计算基础课件—云安全dr.pptx

    云计算基础课件—云安全dr.pptx

    jizu3.cod

    jizu3.cod

    线性规划模型及应用中的整数规划讲义.pptx

    数学模型算法

    JAVA毕业设计之医疗挂号管理系统(springboot+mysql)完整源码.zip

    医疗挂号管理系统是一款基于Spring Boot和MySQL的Java毕业设计项目,旨在为医院提供一个高效、便捷的挂号管理解决方案。该系统采用了当下流行的微服务架构,通过Spring Boot框架实现快速开发和部署,同时使用MySQL数据库进行数据存储和管理。 在技术方面,本项目主要使用了以下技术: Spring Boot:一个基于Spring框架的快速开发工具,可以简化项目的搭建、配置和部署过程,提高开发效率。 MySQL:一款开源的关系型数据库管理系统,用于存储和管理医疗挂号管理系统中的数据。 MyBatis:一款优秀的持久层框架,用于实现Java对象与数据库之间的映射关系,简化数据库操作。 Redis:一款高性能的键值对缓存数据库,用于缓存系统中的热点数据,提高系统性能。 Bootstrap:一款前端UI框架,用于构建响应式的用户界面,提高用户体验。 jQuery:一款轻量级的JavaScript库,用于简化前端开发,实现动态效果和Ajax交互。 在功能方面,医疗挂号管理系统主要包括以下模块: 用户注册与登录:用户可以注册并登录系统,创建个人账户。 医生信息管理:管理员可以添加、修改和删除医生信息,包括姓名、职称、科室等。 挂号管理:用户可以选择医生和就诊时间进行挂号,支持在线支付挂号费用。 挂号记录查询:用户可以查看自己的挂号记录,包括挂号时间、医生信息等。 取消挂号:用户可以在规定时间内取消挂号,系统将退还挂号费用。 预约提醒:系统会在预约就诊前通过短信或邮件提醒用户。 统计报表:管理员可以查看系统的挂号统计数据,包括每日挂号人数、各科室挂号人数等。 通过这些功能,医疗挂号管理系统为医院提供了一个便捷、高效的挂号管理解决方案,有助于提高医疗服务质量和患者满意度。

    基于C++ QT的航空订票系统 .zip

    基于QT的系统

    线性规划模型及应用中的单纯形方法讲义.pptx

    数学模型算法

    小程序-43-基于小程序的企业产品推广系统-源码.zip

    提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

Global site tag (gtag.js) - Google Analytics