1118: ER_TOO_BIG_ROWSIZE: Row size too large
MySQL¿Qué significa?
El tamaño de fila de la tabla que define supera el tamaño máximo de fila permitido por el motor de almacenamiento. El tamaño máximo de fila para columnas que no son BLOB/TEXT es de 65535 bytes; InnoDB tiene límites adicionales que dependen del tamaño de página.
¿Por qué ocurre?
Definir muchas columnas anchas (sobre todo VARCHAR/CHAR largos); cada carácter ocupa hasta 4 bytes en juegos de caracteres multibyte como utf8mb4; o columnas grandes almacenadas inline en el formato de fila COMPACT/REDUNDANT de InnoDB.
Cómo solucionarlo
Convierta algunas columnas grandes a TEXT/BLOB (pueden almacenarse fuera de página); reduzca las columnas innecesarias o muy anchas, o divida la tabla en dos. En InnoDB, usar ROW_FORMAT=DYNAMIC o COMPRESSED ayuda moviendo las columnas grandes fuera de página: ALTER TABLE my_table ROW_FORMAT=DYNAMIC; Tenga en cuenta también innodb_page_size.
Más entradas de este motor
- 1290ER_OPTION_PREVENTS_STATEMENT: running with the --read-only option (se ejecuta con la opción --read-only)
- 1836ER_READ_ONLY_MODE: Running in read-only mode (se ejecuta en modo de solo lectura)
- 3819ER_CHECK_CONSTRAINT_VIOLATED: Check constraint is violated (se infringe la restricción CHECK)
- 1170ER_BLOB_KEY_WITHOUT_LENGTH: BLOB/TEXT column used in key specification without a key length (columna BLOB/TEXT usada en una clave sin longitud de clave)
- 1592ER_BINLOG_UNSAFE_STATEMENT: Unsafe statement written to the binary log (sentencia no segura escrita en el binary log)
- 3140ER_INVALID_JSON_TEXT: Invalid JSON text
- 1526ER_NO_PARTITION_FOR_GIVEN_VALUE: Table has no partition for value (la tabla no tiene ninguna partición para el valor)