Em geral, o erro:
Erro: 2006 ( CR_SERVER_GONE_ERROR) - servidor MySQL foi embora
significa que o cliente não pôde enviar uma pergunta ao servidor .
mysql importar
No seu caso específico, ao importar o arquivo do banco de dados via mysql , isso provavelmente significa que algumas das consultas no arquivo SQL são muito grandes para serem importadas e não puderam ser executadas no servidor; portanto, o cliente falha no primeiro erro ocorrido.
Então você tem as seguintes possibilidades:
Adicione a opção force ( -f) para mysqlprosseguir e executar o restante das consultas.
Isso é útil se o banco de dados tiver algumas consultas grandes relacionadas ao cache que não são relevantes de qualquer maneira.
Aumente max_allowed_packetewait_timeout na configuração do seu servidor (por exemplo ~/.my.cnf).
Despejar o banco de dados usando a --skip-extended-insertopção para dividir as consultas grandes. Em seguida, importe-o novamente.
Tente aplicar a --max-allowed-packetopção para mysql.
Razões comuns
Em geral, esse erro pode significar várias coisas, como:
uma consulta ao servidor está incorreta ou muito grande,
Solução: Aumente a max_allowed_packetvariável .
Verifique se a variável está na [mysqld]seção, não [mysql].
Não tenha medo de usar grandes números para testes (como 1G).
Não esqueça de reiniciar o servidor MySQL / MariaDB.
Verifique novamente se o valor foi definido corretamente por:
mysql -sve "SELECT @@max_allowed_packet" # or:
mysql -sve "SHOW VARIABLES LIKE 'max_allowed_packet'"
Você recebeu um tempo limite da conexão TCP / IP no lado do cliente.
Solução: Aumente a wait_timeoutvariável .
Você tentou executar uma consulta após o fechamento da conexão com o servidor.
Solução: Um erro lógico no aplicativo deve ser corrigido.
Falha na pesquisa do nome do host (por exemplo, problema no servidor DNS) ou o servidor foi iniciado com a --skip-networkingopção
Outra possibilidade é que seu firewall bloqueie a porta MySQL (por exemplo, 3306 por padrão).
O encadeamento em execução foi interrompido, portanto, tente novamente.
Você encontrou um erro em que o servidor morreu durante a execução da consulta.
Um cliente executando em um host diferente não possui os privilégios necessários para se conectar.
E muito mais, então aprenda mais em: B.5.2.9 O servidor MySQL foi embora .
Depuração
Aqui estão algumas idéias de depuração no nível de especialista:
Verifique os logs, por exemplo
sudo tail -f $(mysql -Nse "SELECT @@GLOBAL.log_error")
Teste sua conexão via mysql, telnetou funções de ping (por exemplo, mysql_pingem PHP).
Use tcpdumppara farejar a comunicação MySQL (não funcionará para conexão de soquete), por exemplo:
sudo tcpdump -i lo0 -s 1500 -nl -w- port mysql | strings
No Linux, use strace. No BSD / Mac, use dtrace/ dtruss, por exemplo
sudo dtruss -a -fn mysqld 2>&1
Consulte: Introdução ao DTracing MySQL
Aprenda mais sobre como depurar o servidor ou cliente MySQL em: 26.5 Depurando e portando o MySQL .
Para referência, verifique o código-fonte no sql-common/client.carquivo responsável por gerar o CR_SERVER_GONE_ERRORerro para o comando do cliente.
MYSQL_TRACE(SEND_COMMAND, mysql, (command, header_length, arg_length, header, arg));
if (net_write_command(net,(uchar) command, header, header_length,
arg, arg_length))
{
set_mysql_error(mysql, CR_SERVER_GONE_ERROR, unknown_sqlstate);
goto end;
}