1118: ER_TOO_BIG_ROWSIZE: Row size too large
MySQLЧто это значит?
Размер строки определяемой таблицы превышает максимальный размер строки, допустимый подсистемой хранения. Максимальный размер строки для столбцов, не являющихся BLOB/TEXT, — 65535 байт; у InnoDB есть дополнительные лимиты, зависящие от размера страницы.
Почему возникает?
Определение множества широких столбцов (особенно длинных VARCHAR/CHAR); каждый символ занимает до 4 байт в многобайтовых кодировках, таких как utf8mb4; либо большие столбцы, хранящиеся внутри строки в форматах строк COMPACT/REDUNDANT InnoDB.
Как исправить
Преобразуйте часть больших столбцов в TEXT/BLOB (их можно хранить вне страницы); уменьшите ненужные или очень широкие столбцы либо разделите таблицу на две. В InnoDB помогает ROW_FORMAT=DYNAMIC или COMPRESSED, вынося большие столбцы за пределы страницы: ALTER TABLE my_table ROW_FORMAT=DYNAMIC; Также учитывайте innodb_page_size.
Ещё по этой СУБД
- 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