Estou tentando importar um arquivo de despejo do MySQL.
O arquivo foi criado em um servidor Linux, estou tentando importar no Windows
Entrei na linha de comando e executei:
SOURCE c:/dump.sql
Mas isso parece ter gerado alguns problemas no conjunto de caracteres (especificamente com aspas inteligentes e outras pontuações não padrão).
Foi-me sugerido que eu corro:
mysql -u username -d dbase < c:\dump.sql
Quando tento isso, recebo o erro
ERROR 2006 (HY000) at line 149351: MySQL server has gone away
Um pouco de pesquisa no Google sugeriu que isso estava relacionado à opção max_allowed_packet, mas eu tentei isso e não funcionou. Alguém tem alguma idéia do que isso poderia ser?
Se alguém tiver uma sugestão sobre o problema do conjunto de caracteres, isso também seria útil.
Respostas:
Meu primeiro instinto depois de ler a mensagem de erro no título da pergunta foi sugerir o aumento de max_allowed_packet. Você mencionou que tentou "mudar" e não funcionou. Você pode confirmar que modificou corretamente o arquivo de configuração do servidor? Seu fraseado faz parecer que você tentou usá-lo como uma opção de linha de comando na linha de comando do cliente mysql.exe, o que não faria com que o servidor alterasse o comportamento.
Portanto, resumindo, o que você deve tentar é localizar e editar o arquivo my.cnf que seu servidor está usando no momento. Na
[mysqld]
seção, altere as configurações de max_allowed_packet para algo comoNão se esqueça de reiniciar o servidor depois de alterar a configuração.
Eu usei 32M (um valor ridiculamente grande) como exemplo. Como sua consulta parece ser enorme, você deve tentar esse valor (ou talvez 64M se tiver RAM suficiente) para ver se funciona.
Outra opção é deixar o servidor como está e alterar o comportamento do cliente usado para gerar o dump SQL. Diga para limitar o tamanho das consultas individuais a menos de 1 MB - isso também deve ser suficiente.
Para mais detalhes, consulte B.1.2.10. Pacote muito grande no manual do MySQL.
fonte
No MySQL 5.7.24, era devido à configuração antiga do MySQL 5.6
A opção abaixo é obrigatória se a versão do SQL for a mesma 5.7.5 ou superior.
sql_mode=TRADITIONAL
Também existem dois parâmetros max_allowed_packet no /etc/my.cnf, outro é para o mysqldump. Por favor, tome nota do mesmo.
max_allowed_packet = <1G>
Minha instalação está no CentOS7.
fonte
Você é capaz de acessar a instância do MySQL no servidor Windows a partir da caixa do Linux?
Em caso afirmativo, você pode executar o comando na caixa linux, com a opção -h para se conectar ao servidor na caixa do windows?
Isso pode resolver os problemas do conjunto de caracteres , pois você está usando o cliente Linux na caixa original para fazer a importação. (apenas um palpite)
fonte
O que o log do MySQL diz?
Às vezes, esse erro é relatado no cliente se houver um erro incorrigível no servidor. Isso pode ser um indicador de corrupção no disco das tabelas do banco de dados.
fonte
Sua conta possui uma senha? Talvez você precise adicionar a opção -p:
fonte