🎉 USE O CUPOM DESCONTO.FULL | 20% OFF acima de R$ 50,00

Como corrigir MySQL server has gone away

Time Full Services Time Full Services
Tipo Banco de dados
Nome do erro MySQL server has gone away EN: MySQL server has gone away
Severidade Grave
Descrição "MySQL server has gone away" aparece quando a conexão entre o WordPress e o MySQL cai antes da query terminar, geralmente por timeout de conexão ociosa ou por um pacote maior que o max_allowed_packet do servidor.

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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
INI
; 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

Perguntas frequentes

O que significa MySQL server has gone away?
Significa que a conexão com o servidor MySQL foi encerrada antes de a query terminar. O WordPress tinha uma conexão aberta, mas o servidor a fechou por timeout, por exceder o limite de pacote ou porque o MySQL reiniciou.
O erro só aparece em importações grandes. Por quê?
Porque a query envia um pacote maior que o max_allowed_packet do servidor, e o MySQL derruba a conexão. Aumentar o max_allowed_packet para 64M ou mais costuma resolver esse caso.
Qual a diferença entre wait_timeout e max_allowed_packet?
O wait_timeout controla quanto tempo uma conexão ociosa fica aberta antes de ser fechada. O max_allowed_packet controla o tamanho máximo de um pacote enviado ao servidor. Erros após inatividade pedem o primeiro; erros em dados grandes pedem o segundo.
Estou em hospedagem compartilhada e não acesso o my.cnf. O que faço?
Abra um chamado com o suporte pedindo para aumentar o max_allowed_packet e o wait_timeout do MySQL. Muitos painéis também expõem esses limites na seção de banco de dados.
Pode ser falta de memória do servidor?
Sim. Se o MySQL é encerrado pelo OOM killer por falta de RAM, ele reinicia e derruba as conexões, gerando o erro. Verifique o uso de memória do plano; em picos constantes, avalie subir de plano.
Aumentei os timeouts e o erro persiste. O que checar?
Confirme que o MySQL não está reiniciando (veja o log do serviço) e que o ajuste foi aplicado de fato (a sessão precisa ser reiniciada). Consultas mal otimizadas que estouram o net_write_timeout também provocam o erro.

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →

Uma nova era para o WordPress.

A FULL Services redefine o CMS com uma arquitetura modular que transforma o WordPress em um motor de crescimento digital. 

Painéis personalizados

Um novo nível de controle para o WordPress. Acompanhe métricas, automações e evolução do seu site em um único painel visual.

A força por trás de grandes marcas

Para agências, estúdios e profissionais independentes que desejam oferecer soluções de alto nível com sua própria marca.

Componentes

Hero Sections

30 componentes

Seções de CTA

14 componentes

Login

14 componentes

Blog

14 componentes

Cabeçalhos

24 componentes

Seções de FAQ

53 componentes

Cadastro

53 componentes

Blog individual

53 componentes

Rodapés

28 componentes

Seções de contato

27 componentes

Seções de preços

27 componentes

Faixas

27 componentes

Portfólio

16 componentes

Seções de equipe

12 componentes

Números

12 componentes

Logotipos

12 componentes