6 Apr 2011

MySQL configuração "max_allowed_packet"

Há uns dias atrás estava fazendo um restore de um dump de mais ou menos 500MB. Até aí tudo bem, mas o MySQL começou a retornar a seguinte mensagem de erro.

ERROR 1153 (08S01) at line 651032: Got a packet bigger than 'max_allowed_packet' bytes

O servidor de banco estava em uma máquina de desenvolvimento com Mac OS X 10.6. Até aí nada de mais, mas a instalação do MySQL para o Mac não cria arquivo de configuração. Para resolver o meu problema eu fiz o seguinte, abri um terminal e digitei.

mysqladmin -u root

O sistema retornou a seguinte saída:

Default options are read from the following files in the given order: 
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

Note que no meu caso não foi necessário especificar a senha, pois a minha máquina e de desenvolvimento. Se o usuário root do seu servidor possuir um senha, adicione o parâmetro -p seguido da senha. Exemplo:

#!terminal mysqladmin -u root -p123

Detalhe importante não existe espaço entre o parâmetro e a senha informada(123). Beleza, na resposta do servidor ele informou que o arquivo de configuração do MySQL, pode ser salvo nos diretórios /etc/my.cnf, /etc/mysql/my.cnf, /usr/local/mysql/etc/my.cnf ou ~/.my.cnf. Pra resolver o meu problema fiz o seguinte, criei um arquivo my.cnf no diretório /etc, com o seguinte conteúdo.

[mysqld]
max_allowed_packet=32M

Pronto, agora basta reinicie o serviço do MySQL e o script de dump de 500MB roda redondo. Então fica a dica, quando instalar o MySQL em uma máquina Linux ou Mac OS X, verifique se o arquivo de configuração existe nos diretórios listados acima, caso não encontre, basta copiar o template fornecido pelo MySQL. Abra um terminal, e siga os seguintes passos.

cd /usr/local/mysql/support-files/
sudo cp my-huge.cnf /etc/my.cnf

Pronto, reinicie o serviço do MySQL.