


















在 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 字节),这里的 “行内存储” 指:
在 InnoDB 存储引擎中,ROW_FORMAT 用于指定表的行存储格式,影响数据在磁盘上的存储方式(尤其是大字段如 TEXT/BLOB 的处理)
优化表结构:将部分大长度的 VARCHAR 字段改为 TEXT
修改表的行格式:将表的行格式改为 DYNAMIC
CREATE TABLE 表名 ( ... 原表结构 ... ) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
若已创建表,可通过ALTER TABLE修改:
ALTER TABLE 表名 ROW_FORMAT=DYNAMIC;
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。