Ticker

6/recent/ticker-posts

Error MySQL: 1118 - Row size too large (> 8126).

Estos mensajes indican que la definición de la tabla permite filas que el formato de fila InnoDB de la tabla en realidad no puede almacenar. Normalmente la alerta de mensajes se generan en los siguientes casos:

  • Si el modo estricto de InnoDB está habilitado y se ejecuta una declaración DDL que toca la tabla, como CREATE TABLE o ALTER TABLE , entonces InnoDB generará un error con este mensaje
  • Si el modo estricto de InnoDB está deshabilitado y se ejecuta una declaración DDL que toca la tabla, como CREATE TABLE o ALTER TABLE , entonces InnoDB generará una advertencia con este mensaje.
  • Independientemente de si el modo estricto de InnoDB está habilitado, si se ejecuta una declaración DML que intenta escribir una fila que el formato de fila InnoDB de la tabla no puede almacenar, InnoDB generará un error con este mensaje.


Mensaje del error:

En este casos ejecutamos una declaración DDL de tipo CREATE TABLE en nuestra base de datos demo de MySQL (la solución también aplica para MariaDB), donde el InnoDB generará el siguiente error:

1118 - 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.



Solución:

Para solucionar el error que nos genera el InnoDB debemos remplazar el InnoDB por MyISAM y agregar ROW_FORMAT=COMPRESSED:

La siguiente sentencia:

ENGINE=InnoDB DEFAULT CHARSET=latin1;



Remplazar por:

ENGINE=MyISAM DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED;


Referencia:

Troubleshooting Row Size Too Large Errors with InnoDB

Publicar un comentario

0 Comentarios