Como corrigir MySQL server has gone away
O que é o erro MySQL server has gone away?
Esse erro é a mensagem que o cliente MySQL devolve quando a conexão com o servidor foi encerrada no meio de uma operação. No WordPress, o PHP abriu uma conexão, mas o servidor de banco fechou essa conexão por inatividade, por exceder um limite de pacote, ou porque o próprio MySQL reiniciou ou ficou sem memória. A query falha e a página quebra ou exibe o aviso.
Como identificar
- Mensagem “MySQL server has gone away” no log de erros do PHP ou na tela durante uma operação no banco.
- Importações grandes via phpMyAdmin ou WP-CLI param no meio com “MySQL server has gone away”.
- O erro surge em consultas pesadas ou após o site ficar ocioso por alguns minutos.
- Plugins de backup ou de migração falham ao gravar registros muito grandes no banco.
Como prevenir
- Defina o max_allowed_packet com folga (64M ou mais) para suportar importações e backups grandes
- Quebre operações pesadas em lotes menores em vez de uma única query gigante
- Monitore a memória do servidor para o MySQL não ser encerrado pelo OOM killer em picos
Causa
- Conexão fechada por inatividade quando o tempo ocioso passa do wait_timeout configurado no MySQL.
- Query enviou um pacote maior que o max_allowed_packet do servidor, fazendo o MySQL derrubar a conexão.
- Servidor MySQL reiniciou, travou ou foi morto pelo OOM killer por falta de memória durante a operação.
- Consulta muito longa estourou o net_read_timeout ou o net_write_timeout do MySQL.
- Conexão persistente reaproveitada pelo PHP depois que o servidor já a havia encerrado.
Como resolver
- Identifique quando o erro ocorre: veja se ele aparece em importações grandes (indício de max_allowed_packet baixo) ou após inatividade (indício de wait_timeout curto). O contexto aponta o parâmetro a ajustar.
- Aumente o max_allowed_packet: no painel da hospedagem ou no arquivo de configuração do MySQL (my.cnf), eleve o limite de pacote para 64M ou mais, e reinicie o serviço MySQL.
- Aumente o wait_timeout: ainda no my.cnf, suba o wait_timeout e o interactive_timeout para que conexões ociosas não sejam cortadas tão cedo. Em hospedagem compartilhada, peça o ajuste ao suporte.
- Cheque a memória do servidor: se o MySQL é morto por falta de memória, reveja o uso de RAM do plano ou avalie subir de plano. Um MySQL reiniciando derruba todas as conexões ativas.
; Ajustes no my.cnf (secao [mysqld]) - reinicie o MySQL apos editar
[mysqld]
max_allowed_packet = 64M
wait_timeout = 300
interactive_timeout = 300
net_read_timeout = 120
net_write_timeout = 120














