La pregunta se ha realizado en serverfault también.
Es posible que desee echar un vistazo a este artículo lo que explica mucho sobre los tamaños de fila de MySQL. Es importante tener en cuenta que incluso si usa campos de TEXTO o BLOB, el tamaño de su fila aún podría ser superior a 8K (límite para InnoDB) porque almacena los primeros 768 bytes para cada campo en línea en la página.
La forma más sencilla de solucionar esto es usar el formato de archivo Barracuda con InnoDB. Básicamente, esto elimina el problema por completo al almacenar solo el puntero de 20 bytes a los datos de texto en lugar de almacenar los primeros 768 bytes.
El método que funcionó para el OP fue:
-
Agregue lo siguiente a
my.cnf
archivo bajo[mysqld]
sección.innodb_file_per_table=1 innodb_file_format = Barracuda
-
ALTER
la tabla para usarROW_FORMAT=COMPRESSED
.ALTER TABLE nombre_tabla ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
Existe la posibilidad de que lo anterior aún no resuelva sus problemas. Es un error conocido (y verificado)
con InnoDB motor, y una solución temporal por ahora es recurrir a MyISAM motor como almacenamiento temporal. Entonces, en su my.cnf
archivo:
internal_tmp_disk_storage_engine=MyISAM