Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PHP Mysql PDO:Erro geral:o servidor MySQL de 2006 desapareceu


Alguns outros motivos comuns para o erro do servidor MySQL ter desaparecido são:

  • Você (ou o administrador do banco de dados) matou o thread em execução com uma instrução KILL ou um comando mysqladmin kill.

  • Você tentou executar uma consulta após fechar a conexão com o servidor. Isso indica um erro de lógica no aplicativo que deve ser corrigido.

  • Um aplicativo cliente rodando em um host diferente não tem os privilégios necessários para se conectar ao servidor MySQL desse host.

  • Você obteve um tempo limite da conexão TCP/IP no lado do cliente. Isso pode acontecer se você estiver usando os comandos:mysql_options(..., MYSQL_OPT_READ_TIMEOUT,...) ou mysql_options(..., MYSQL_OPT_WRITE_TIMEOUT,...). Nesse caso, aumentar o tempo limite pode ajudar a resolver o problema.

  • Você encontrou um tempo limite no lado do servidor e a reconexão automática no cliente está desabilitada (o sinalizador de reconexão na estrutura MYSQL é igual a 0).

  • Você está usando um cliente Windows e o servidor desligou a conexão (provavelmente porque wait_timeout expirou) antes que o comando fosse emitido.

  • O problema no Windows é que, em alguns casos, o MySQL não obtém um erro do sistema operacional ao gravar na conexão TCP/IP do servidor, mas obtém o erro ao tentar ler a resposta da conexão.

  • A solução para isso é fazer um mysql_ping() na conexão se houver muito tempo desde a última consulta (isso é o que o Connector/ODBC faz) ou definir wait_timeout no servidor mysqld tão alto que na prática nunca ocorre Fora.

  • Você também pode obter esses erros se enviar uma consulta ao servidor incorreta ou muito grande. Se o mysqld recebe um pacote muito grande ou fora de ordem, ele assume que algo deu errado com o cliente e fecha a conexão. Se você precisar de grandes consultas (por exemplo, se estiver trabalhando com grandes colunas BLOB), poderá aumentar o limite de consultas definindo a variável max_allowed_packet do servidor, que tem um valor padrão de 4 MB. Você também pode precisar aumentar o tamanho máximo do pacote na extremidade do cliente. Mais informações sobre como definir o tamanho do pacote são fornecidas na Seção B.5.2.10, “Pacote muito grande”.

  • Uma instrução INSERT ou REPLACE que insere muitas linhas também pode causar esses tipos de erros. Qualquer uma dessas instruções envia uma única solicitação ao servidor, independentemente do número de linhas a serem inseridas; assim, muitas vezes você pode evitar o erro reduzindo o número de linhas enviadas por INSERT ou REPLACE.

  • Você também perderá a conexão se estiver enviando um pacote de 16 MB ou mais, se seu cliente for anterior à versão 4.0.8 e seu servidor for 4.0.8 e superior, ou vice-versa.

  • Também é possível ver esse erro se as pesquisas de nome de host falharem (por exemplo, se o servidor DNS no qual seu servidor ou rede depende ficar inativo). Isso ocorre porque o MySQL depende do sistema host para resolução de nomes, mas não tem como saber se está funcionando – do ponto de vista do MySQL, o problema é indistinguível de qualquer outro timeout de rede.

  • Você também pode ver que o servidor MySQL desapareceu se o MySQL for iniciado com a opção --skip-networking.

  • Outro problema de rede que pode causar esse erro ocorre se a porta MySQL (padrão 3306) estiver bloqueada pelo firewall, impedindo assim qualquer conexão com o servidor MySQL.

  • Você também pode encontrar esse erro com aplicativos que bifurcam processos filhos, todos os quais tentam usar a mesma conexão com o servidor MySQL. Isso pode ser evitado usando uma conexão separada para cada processo filho.

  • Você encontrou um bug em que o servidor morreu durante a execução da consulta.

Confira este link:Gone Away