Row size too large (> 8126 bytes for InnoDB default row format)
Production Risk
Medium — DDL fails; existing data is unaffected but schema cannot be changed.
ER_TOO_BIG_ROWSIZE (1118, SQLSTATE HY000) is raised when the combined size of all fixed-length columns in a table exceeds the maximum row size for the storage engine. For InnoDB with REDUNDANT/COMPACT row format, the limit is approximately 8126 bytes.
- 1Many VARCHAR or fixed-length columns whose total exceeds the row size limit
- 2Using REDUNDANT or COMPACT row format instead of DYNAMIC or COMPRESSED
- 3Very wide tables with many fixed-length columns
CREATE TABLE t ( c1 VARCHAR(500), c2 VARCHAR(500), c3 VARCHAR(500), c4 VARCHAR(500), c5 VARCHAR(500), c6 VARCHAR(500), c7 VARCHAR(500), c8 VARCHAR(500), c9 VARCHAR(500), c10 VARCHAR(500), c11 VARCHAR(500), c12 VARCHAR(500), c13 VARCHAR(500), c14 VARCHAR(500), c15 VARCHAR(500), c16 VARCHAR(500), c17 VARCHAR(500) ) ROW_FORMAT=COMPACT;
expected output
ERROR 1118 (HY000): 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.
Fix 1
Switch to DYNAMIC or COMPRESSED row format
WHEN InnoDB table with COMPACT or REDUNDANT row format.
ALTER TABLE t ROW_FORMAT=DYNAMIC; -- or set globally: SET GLOBAL innodb_default_row_format=DYNAMIC;
Why this works
DYNAMIC row format stores long VARCHAR/TEXT columns off-page, allowing much larger effective row sizes.
Fix 2
Convert large VARCHAR columns to TEXT
WHEN Row format change is not possible.
ALTER TABLE t MODIFY COLUMN large_col TEXT;
Why this works
TEXT columns are stored off-page in InnoDB by default (in DYNAMIC format), removing them from the inline row size calculation.
✕ Silently truncate data to fit within the row size limit
Truncating data silently loses information; fix the schema instead.
innodb_default_row_format was introduced with a default of DYNAMIC, making 1118 less common on new tables.
MySQL 8.0 — 1118 ER_TOO_BIG_ROWSIZE
Content generated with AI assistance and reviewed for accuracy. Found an error? hello@errcodes.dev