DBAtlas · 数据库运维图谱

1118: ER_TOO_BIG_ROWSIZE: Row size too large(行大小过大)

MySQL

含义

所定义表的行大小超过了存储引擎允许的最大行大小。非 BLOB/TEXT 列的最大行大小为 65535 字节;InnoDB 还有取决于页大小的额外限制。

原因

定义了许多宽列(尤其是长 VARCHAR/CHAR);在 utf8mb4 等多字节字符集中每个字符最多占 4 字节;或在 InnoDB 的 COMPACT/REDUNDANT 行格式中大列以内联方式存储。

解决方法

将部分大列转换为 TEXT/BLOB(这些列可以页外存储);缩小不必要或过宽的列,或将表一分为二。在 InnoDB 中,使用 ROW_FORMAT=DYNAMIC 或 COMPRESSED 可将大列移到页外:ALTER TABLE my_table ROW_FORMAT=DYNAMIC; 同时考虑 innodb_page_size。

在 DBAtlas 中打开 →

同一数据库的其他条目