Erro: MySQL server has gone away


Esta seção também cobre o erro relacionado sobre perda de conexão com o servidor durante uma consulta.

A razão mais comum para o erro MySQL server has gone away é que o servidor esgotou o tempo limite e fechou a conexão. Por padrão, o servidor fecha uma conexão depois de 8 horas se nada aconctecer. Você pode alterar o tempo limite configurando a variável wait_timeout quando você iniciar o mysqld.

Outra razão comum para receber o erro MySQL server has gone away é porque você executou um fechar em sua conexão MariaDB a então tentou executar uma consulta na conexão fechada.

Se você tiver um script, você só tem que executar a consulta novamente para o cliente reconectar autometicamente.

Você normalmente pode obter os seguintes códigos de erros neste caso (qual você obterá dependerá do SO):

Código de erro Descrição
CR_SERVER_GONE_ERROR O cliente não pode enviar um pedido ao servidor.
CR_SERVER_LOST O cliente não obteve um erro ao escrever no servidor, mas não obteve uma resposta completa (ou nenhuma resposta) a seu pedido.

Você também irá obter este erro se alguém tiver matado a thread em execução com kill #threadid#.

Você pode verificar que o MariaDB não morreu executando mysqladmin version e examinando o tempo em execução. Se o problema é que o mysqld falhou você deve descobrir a razão da falha. Você deve neste caso iniciar verificando se executar a consulta novamente irá finalizar o MariaDB novamente. Leia Seção A.4.1, "O Que Fazer Se o MariaDB Continua Falhando".

Você também pode obter estes erros se você enviar uma consulta incorreta ou muito grande ao servidor. Se mysqld recebe um pacote muito grande ou fora de ordem. ele assume que alguma coisa saiu errado com o cliente e fecha a conexão. Se você precisa de grandes consultas (por exemplo, se você está trabalhando com grandes colunas BLOB), você pode aumentar o limite da consulta iniciando o mysqld com a opção -O max_allowed_packet=# (padrão 1M). A memória extra é alocada sobre demanda, assim o mysqld alocará mais memória apenas quando você executar uma grande consulta ou quando o mysqld deve retornar um grande registro de resultado!

Você também obterá uma conexão perdida se você estiver enviando um pacote >= 16M e se seu cliente for mais antigo que a versão 4.0.8 e a versão do seu servidor é 4.0.8 e acima ou vice versa.

Se você quiser fazer um relatório de erros descreendo este prolema, esteja certo de ter incluído as seguintes informações:

See "Fazendo perguntas ou relatando erros".

Retornar