当前位置: 首页 > news >正文

msyql中SQL 错误 [1118] [42000]: Row size too large (> 8126)

场景:

CREATE TABLE `test-qd`.eqtree (`INSERT INTO test.eqtree (idocid` VARCHAR(50) NULL,sfcode VARCHAR(50) NULL,sfname VARCHAR(50) NULL,sfengname VARCHAR(50) NULL,……
)
ENGINE=InnoDB
DEFAULT CHARSET=utf8
COLLATE=utf8_general_ci;

alter  table eqtree modify  column DMODT  varchar(20) ;

SQL 错误 [1118] [42000]: Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.

在这里插入图片描述

临时解决办法:

执行以下SQL语句,查看严格模式是否开启
show variables like ‘%innodb_strict_mode%’;

执行后如果为​​ON​​,则需要关闭
set global innodb_strict_mode=0;

此方式下基于会话级别

完成后恢复
set global innodb_strict_mode=1;

或更新my.ini​​,在[mysqld]配置项下面新增一行

[mysqld]
innodb_strict_mode=0

根本原因分析:

这个错误通常是由于MySQL表中的行过大而引起的。MySQL有一些限制,其中一个是行的最大大小不能超过特定的限制,通常为65,535个字节。在你的情况下,行的大小超过了这个限制,导致了错误1118的出现。

要解决这个问题,你可以考虑以下几种方法:
优化表结构:检查表的设计,尝试减少每行所占用的空间。这可能包括删除不必要的列,使用更紧凑的数据类型,或将较大的列(如TEXT或BLOB)移出主表并将其替换为引用表。
使用TEXT或BLOB类型:根据错误消息的建议,将较大的列(如文本或二进制数据)改为TEXT或BLOB类型。这将使得存储在这些列中的数据不会直接存储在行中,而是存储在单独的页中。
分割表:如果可能的话,将表拆分成多个相关联的表,以减少每个表行的大小。
使用InnoDB的压缩功能:InnoDB引擎提供了行压缩功能,可以减少行的存储空间。你可以考虑启用InnoDB的压缩功能来减少表的存储空间。

借助对表分析:

SHOW TABLE STATUS LIKE ‘eqtree’;

待完善……

http://www.lryc.cn/news/340475.html

相关文章:

  • 实验六 智能手机互联网程序设计(微信程序方向)实验报告
  • Linux环境下,让Jar项目多线程部署成为可能
  • k8s调度场景
  • 基于小程序实现的餐饮外卖系统
  • 家居网购项目(手写分页)
  • goland2024安装包(亲测可用)
  • 35、链表-LRU缓存
  • 数据结构速成--栈
  • 算法练习第15天|226.翻转二叉树
  • C#面向对象——封装、封装案例示例
  • 【InternLM 实战营第二期-笔记3】茴香豆:搭建你的 RAG 智能助理
  • Advanced RAG 03:运用 RAGAs 与 LlamaIndex 评估 RAG 应用
  • leetcode
  • Unity DOTS《群体战斗弹幕游戏》核心技术分析之3D角色动画
  • react异步组件如何定义使用 标准使用方法
  • React + Ts + Vite + Antd 项目搭建
  • js爬虫puppeteer库 解决网页动态渲染无法爬取
  • 代码随想录:二叉树5
  • Tomcat 获取客户端真实IP X-Forwarded-For
  • 记录PS学习查漏补缺
  • Kafka 架构深入探索
  • k-means聚类算法的MATLAB实现及可视化
  • Excel文件转Asc文件
  • 【题目】【信息安全管理与评估】2022年国赛高职组“信息安全管理与评估”赛项样题7
  • Webrtc 信令服务器实现
  • 【Blockchain】连接智能合约与现实世界的桥梁Chainlink
  • 解决EasyPoi导入Excel获取不到第一列的问题
  • Vue 阶段练习:记事本
  • JavaScript判断受访域名,调用不同的js文件
  • 下载软件时的Ubuntu x86_64-v2、skylake、aarch64版本分别代表什么?