Como resolver - MySQL server has gone away

13/11/2013

0

Bom dia colegas

Tenho um software em Delphi com MySQL e em alguns momentos da minha aplicação acontece a seguinte mensagem "MySQL server has gone away".

Pesquisei na internet e vi que este erro ocorre quando você demora para executar uma query após conectar-se ao servidor MySQL, por questões operacionais e de desempenho, o servidor encerra a conexão ociosa automaticamente. Para resolver este erro, programe seu script para conectar-se ao banco, executar a query e encerrar a conexão.
O tempo de duração de uma conexão ociosa ao servidor é de 15 segundos.

Já no link http://wagnerbianchi.com/blog/?p=301 , o autor vincula o erro à operações de carga de dados, restore de um banco ou mesmo, em meio às interações do aplicação com o servidor MySQL e o tamanho máximo dos pacotes que podem trafegar nas threads do MySQL e indica mexer no my.cnf.

Alguém já passou por isto e pode me dá umas dicas?

Desde já agradeço a atenção.

Alessandro Yamasaki

Alessandro Yamasaki

Responder

Post mais votado

13/11/2013

Olá Alaplaia e grupo

Pesquisei e vi que a razão mais comum do erro é que o servidor excedeu o tempo limite e fechou a conexão. A melhor solução é alterar o limite de tempo, definido a variável wait_timeout quando você iniciar o mysql. Consulte a Seção 5.1.4, "Variáveis do sistema do servidor" < http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html >

Outros motivos são:
- Executar uma consulta depois de fechar a conexão com o servidor;
- Aplicativo cliente rodando em host sem os privilégios;
- Tempo limite no lado do servidor e a reconexão automática no cliente está desativada (a bandeira reconectar na estrutura MYSQL é igual a 0) ;
- Cliente Windows e o servidor caiu à conexão (provavelmente wait_timeout expirado);
- Tempo limite da conexão TCP / IP no lado do cliente - mysql_options (MYSQL_OPT_READ_TIMEOUT) ou mysql_options (MYSQL_OPT_WRITE_TIMEOUT)
- Grandes consultas, ele fecha a conexão, para isto, aumentar o limite de consultas max_allowed_packet q tem o valor padrão de 1MB
< http://dev.mysql.com/doc/refman/5.0/en/packet-too-large.html >
- Outro problema de rede que podem causar esse erro ocorre se a porta MySQL (padrão 3306) está bloqueada pelo firewall

[]´s

Alessandro Yamasaki

Alessandro Yamasaki
Responder

Mais Posts

13/11/2013

Felippe Tadeu

Bom dia cara.

Esse erro pode estar vinculado a várias coisas, não apenas a questões operacionais de sistema, mas sim de conexão de internet, que apenas uma oscilação já poderia causar o erro, problema de rotas de conexão do provedor cliente ao servidor, caso não seja nenhuma dessas eu recomendo que antes de vc fazer qlqr coisa usando uma query, vc conecte ao banco e depois de terminar a ação toda, vc desconecte do banco, só que pode aumentar a qntde de requisição de login do sistema, aí vc tem que avaliar o teu ambiente de trabalho também.

Obs: tente no caso da internet fazer um tracert do cliente para o servidor, no caso do servidor não ser local
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar