1118: ER_TOO_BIG_ROWSIZE: Row size too large
MySQLWhat does it mean?
The row size of the table you are defining exceeds the maximum row size allowed by the storage engine. The maximum row size for non-BLOB/TEXT columns is 65535 bytes; InnoDB has additional limits that depend on the page size.
Why does it happen?
Defining many wide columns (especially long VARCHAR/CHAR); each character taking up to 4 bytes in multibyte character sets such as utf8mb4; or large columns stored inline in InnoDB's COMPACT/REDUNDANT row format.
How to fix it
Convert some large columns to TEXT/BLOB (these can be stored off-page); shrink unnecessary or very wide columns, or split the table in two. In InnoDB, using ROW_FORMAT=DYNAMIC or COMPRESSED helps by moving large columns off-page: ALTER TABLE my_table ROW_FORMAT=DYNAMIC; Also take innodb_page_size into account.
More from this engine
- 1290ER_OPTION_PREVENTS_STATEMENT: running with the --read-only option
- 1836ER_READ_ONLY_MODE: Running in read-only mode
- 3819ER_CHECK_CONSTRAINT_VIOLATED: Check constraint is violated
- 1170ER_BLOB_KEY_WITHOUT_LENGTH: BLOB/TEXT column used in key specification without a key length
- 1592ER_BINLOG_UNSAFE_STATEMENT: Unsafe statement written to the binary log
- 3140ER_INVALID_JSON_TEXT: Invalid JSON text
- 1526ER_NO_PARTITION_FOR_GIVEN_VALUE: Table has no partition for value