惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
CXSECURITY Database RSS Feed - CXSecurity.com
K
Kaspersky official blog
A
Arctic Wolf
Attack and Defense Labs
Attack and Defense Labs
L
LINUX DO - 热门话题
N
News | PayPal Newsroom
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
L
Lohrmann on Cybersecurity
PCI Perspectives
PCI Perspectives
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
The Last Watchdog
The Last Watchdog
B
Blog RSS Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
W
WeLiveSecurity
Know Your Adversary
Know Your Adversary
博客园 - Franky
T
Tenable Blog
T
Tailwind CSS Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Help Net Security
Help Net Security
WordPress大学
WordPress大学
T
The Exploit Database - CXSecurity.com
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园 - 司徒正美
阮一峰的网络日志
阮一峰的网络日志
D
Darknet – Hacking Tools, Hacker News & Cyber Security
H
Heimdal Security Blog
TaoSecurity Blog
TaoSecurity Blog
S
Security Affairs
J
Java Code Geeks
小众软件
小众软件
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Apple Machine Learning Research
Apple Machine Learning Research
NISL@THU
NISL@THU
O
OpenAI News
The Cloudflare Blog
月光博客
月光博客
Google Online Security Blog
Google Online Security Blog
V
V2EX
罗磊的独立博客
美团技术团队
博客园 - 三生石上(FineUI控件)
Security Latest
Security Latest
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
C
Cyber Attacks, Cyber Crime and Cyber Security
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Cyberwarzone
Cyberwarzone
L
LINUX DO - 最新话题
Hacker News - Newest:
Hacker News - Newest: "LLM"
大猫的无限游戏
大猫的无限游戏

博客园 - 轻舟软件

轻舟分公司协作平台:统一管理、高效协作 IDEA中Java代码修改后及时生效的方法 python SQLite 访问组件 AI课堂笔记:AI编程 轻舟项目管理系统:台账・文件・协作・管控,让项目告别混乱,有序可控! 分公司项目的柔性管理(造价咨询、招标代理) 咨询行业——项目费用管控 咨询行业——项目管理模型 Java8:函数式接口、Lambda、Stream Java知识图谱(转) 简约至上 软件需求分析方法论(转) EasyUI的属性、事件、方法的使用 两位小数偶感 什么是函数? HQL分页查询、分组查询 MySql 、Oracle 获取表结构和字段信息 马云卸任演讲全文(2019-09-10) MySQL权限管理常用命令
[ERR] 1118 - Row size too large (> 8126)
轻舟软件 · 2025-09-28 · via 博客园 - 轻舟软件

一、MySQL 8 导入大表时的错误

在 MySQL 8 中,用导入脚本创建数据库时,有一张大表出现如下错误:

[ERR] 1118 - Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.

 二、原因分析

核心原因是:表中所有字段的 “行内存储总长度” 超过了 InnoDB 引擎的单行大小限制(默认 8126 字节)。

InnoDB 对 “行内存储的总字节数” 有严格限制(默认 8126 字节),这里的 “行内存储” 指:

  • 所有非 TEXT/BLOB 类型的字段(如 varchar、int、datetime 等)会直接存储在行内。
  • TEXT/BLOB 类型(包括 longtext)虽然允许存储大内容,但默认会在行内存储 768 字节  的前缀(剩余内容存在行外)(注:在 ROW_FORMAT=COMPACT 时)。

在 InnoDB 存储引擎中,ROW_FORMAT 用于指定表的行存储格式,影响数据在磁盘上的存储方式(尤其是大字段如 TEXT/BLOB 的处理)

  • COMPACT(紧凑格式):对 TEXT/BLOB 字段,强制在行内存储前 768 字节前缀,剩余内容存储在行外(溢出页),行内保留指向行外数据的指针。
  • DYNAMIC(动态格式):对 TEXT/BLOB 字段:仅当行内空间足够时才存储前缀,若行内空间不足,会将整个字段内容移至行外,行内仅保留 20 字节的指针(指向行外数据)。

 三、解决方法

优化表结构:将部分大长度的 VARCHAR 字段改为 TEXT
修改表的行格式:将表的行格式改为 DYNAMIC

CREATE TABLE 表名 (
  ... 原表结构 ...
) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; 

若已创建表,可通过ALTER TABLE修改:

ALTER TABLE 表名 ROW_FORMAT=DYNAMIC;