Quem nunca teve que importar um banco de dados pelo phpMyAdmin e recebeu, na cara, o bom e velho erro 500 Internal Server Error que jogue a primeira pedra!
O grande problema desse tipo de erro é que ele não fica documentado dentro dos logs de erro do domínio e é acessível apenas para quem administra o servidor, logo, você fica com cara de tacho sem saber o que fazer e sem saber exatamente como corrigir o problema.
Não vou listar aqui todas as causas possíveis desse erro pois elas vão desde pouca memória para o phpMyAdmin, passando pelo tempo de execução do script ou até mesmo um simples arquivo SQL corrompido ou mal formado. Há, porém, um outro detalhe que pode interferir na importação de arquivos no phpMyAdmin que, acreditem ou não, é causado pelo próprio phpMyAdmin que insere algumas informações dentro do arquivo SQL e, dependendo de onde você for importar esse arquivo, o tal erro irá aparecer.
Se você abrir o arquivo .sql em um editor de textos, verá as seguintes linhas no cabeçalho:
[snippet id=”1390″]
E as seguintes linhas no rodapé:
[snippet id=”1391″]
Lembrando que as informações podem variar de versão para versão do phpMyAdmin.
Pois bem… a maioria dos erros são causadas por essas instruções no início e/ou no fim do arquivo SQL que você gerou para ser importado no novo servidor. Algumas configurações no MySQL dos servidores podem não aceitar essas instruções no início e, para melhorar, o phpMyAdmin simplesmente retorna um erro 500 Internal Server Error na hora de importar o arquivo.
A solução é simples: Basta remover essas linhas e deixar o seu arquivo de exportação iniciando diretamente nas primeiras linhas de instrução de inserção/alteração de tabelas. A maioria dos servidores já possuem configurações padronizadas e não permitem essas instruções no “cabeçalho” do arquivo SQL de importação.
Uma outra dica é sempre enviar o arquivo compactado para o servidor. Caso não tenha como compactar com o gzip, que é o padrão em servidores Linux, compacte com Zip mesmo. Além de lhe poupar bastante banda e demora para envio do arquivo, vai evitar que o arquivo se corrompa no meio da transmissão.