A pergunta foi feita em serverfault também.
Você pode dar uma olhada este artigo o que explica muito sobre os tamanhos das linhas do MySQL. É importante observar que, mesmo se você usar os campos TEXT ou BLOB, o tamanho da linha ainda poderá ser superior a 8 K (limite para InnoDB) porque ele armazena os primeiros 768 bytes de cada campo embutido na página.
A maneira mais simples de corrigir isso é usar o formato de arquivo Barracuda com InnoDB. Isso basicamente elimina o problema completamente armazenando apenas o ponteiro de 20 bytes para os dados de texto em vez de armazenar os primeiros 768 bytes.
O método que funcionou para o OP foi:
-
Adicione o seguinte aomy.cnf
arquivo em[mysqld]
seção.
innodb_file_per_table=1 innodb_file_format = Barracuda
-
ALTER
a tabela para usarROW_FORMAT=COMPRESSED
.
ALTER TABLE nombre_tabla ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
Existe a possibilidade de que o acima ainda não resolva seus problemas. É um bug conhecido (e verificado) com o InnoDB engine, e uma correção temporária por enquanto é o fallback para MyISAM motor como armazenamento temporário. Então, em seu
my.cnf
Arquivo:internal_tmp_disk_storage_engine=MyISAM