Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Altere o limite para o tamanho da linha do Mysql muito grande


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:

  1. Adicione o seguinte ao my.cnf arquivo em [mysqld] seção.
    innodb_file_per_table=1
    innodb_file_format = Barracuda
    

  2. ALTER a tabela para usar ROW_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