Eu tenho um problema com o MySQL, tenho uma tabela com muitos campos de texto. Quando tento armazenar alguns dados, obtenho esse erro.
Tamanho da linha muito grande. O tamanho máximo da linha para o tipo de tabela usado, sem contar os BLOBs, é 8126. É necessário alterar algumas colunas para TEXT ou BLOBs
O texto que eu guardo em cada campo não é muito longo, apenas alguns parágrafos em cada um.
O que eu posso fazer?
Você pode dar uma olhada neste artigo, que explica muito sobre o tamanho das linhas do MySQL. É importante observar que, mesmo se você usar campos TEXT ou BLOB, o tamanho da sua linha ainda poderá ser superior a 8K (limite para o InnoDB) porque ele armazena os primeiros 768 bytes para cada campo embutido na página. A maneira mais simples de corrigir isso é usar o formato de arquivo Barracuda com o InnoDB. Isso basicamente elimina completamente o problema armazenando apenas o ponteiro de 20 bytes nos dados de texto em vez de armazenar os primeiros 768 bytes.
fonte
Bem, faça como o mysql diz: converta grandes campos de varchar em texto ou blob (ALTER TABLE). os campos de texto se comportam de maneira semelhante ao varchar (os índices precisam do tamanho do prefixo, mas, no entanto, funcionam), mas são armazenados separadamente.
Esta referência informa os limites exatos de cada mecanismo de tabela mysql padrão:
http://dev.mysql.com/doc/refman/5.0/en/column-count-limit.html
E aqui está tudo a saber sobre os campos de texto:
http://dev.mysql.com/doc/refman/5.0/en/blob.html
fonte
Principalmente postagem cruzada do Stack Overflow , mas esse é um bug aberto (e verificado) no mecanismo InnoDB do servidor MySQL . Uma correção temporária no momento é fazer o fallback para o mecanismo MyISAM como armazenamento temporário. Então, no seu arquivo my.cnf:
fonte