Sou extremamente novo no MySQL e estou executando-o no Windows. Estou tentando restaurar um banco de dados de um dumpfile no MySQL, mas recebo o seguinte erro:
$ >mysql -u root -p -h localhost -D database -o < dump.sql
ERROR: ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode. Set --binary-mode to 1 if ASCII '\0' is expected. Query: 'SQLite format 3'.
Eu tentei colocar --binary-mode
no arquivo ini, mas ainda dá o mesmo erro. O que devo fazer? Por favor ajude.
ATUALIZAR
Como sugerido por Nick em seu comentário, eu tentei, $ > mysql -u root -p -h localhost -D database --binary-mode -o < dump.sql
mas ele me deu o seguinte: ERROR at line 1: Unknown command '\☻'.
É um arquivo de despejo de 500 Mb, e quando vejo seu conteúdo usando o gVIM, tudo que posso ver são expressões e dados que não são compreensíveis.
mysql
database
mysqldump
database-restore
user1434997
fonte
fonte
.sql
arquivo com caracteres e codificações estranhas. A segunda tentativa funcionou bem.Respostas:
Descompacte o arquivo e importe-o novamente.
fonte
.tar.bz2
usar o Linux e usei o WinRAR para extraí-lo no Windows. Eu não entendo . Agradável.Eu encontro o mesmo problema no Windows ao restaurar um arquivo de despejo. Meu arquivo de despejo foi criado com windows powershell e mysqldump como:
mysqldump db > dump.sql
O problema vem da codificação padrão do PowerShell é UTF16. Para ver isso mais a fundo, podemos usar o utilitário "arquivo" do GNU, e existe uma versão do Windows aqui .
A saída do meu arquivo de despejo é:
Texto Unicode UTF-16 Little-endian, com linhas muito longas, com terminadores de linha CRLF.
Em seguida, é necessária uma conversão do sistema de codificação e existem vários softwares que podem fazer isso. Por exemplo no emacs,
M-x set-buffer-file-coding-system
em seguida, insira o sistema de codificação necessário, como utf-8.
E no futuro, para um melhor resultado do mysqldump, use:
mysqldump <dbname> -r <filename>
e então a saída é tratada por
mysqldump
si mesma, mas não o redirecionamento do PowerShell.referência: /dba/44721/error-while-restoring-a-database-from-an-sql-dump
fonte
Na máquina Windows, siga as etapas anteriores.
Agora fonte seu banco de dados.
fonte
Extraia seu arquivo com a ferramenta de arquivamento Tar. você pode usá-lo desta forma:
fonte
Você já tentou abrir no notepad ++ (ou outro editor) e nos converter / salvar para UTF-8?
Veja: notepad ++ convertendo arquivo codificado ansi para utf-8
Outra opção pode ser usar textwrangle para abrir e salvar o arquivo como UTF-8: http://www.barebones.com/products/textwrangler/
fonte
Eu tive este erro uma vez, depois de executar
mysqldump
no Windows PowerShell assim:mysqldump -u root p my_db --no-data --no-create-db --no-create-info --routines --triggers --skip-opt --set-gtid-purged=OFF > db_objects.sql
O que fiz foi mudá-lo para este (pipe em vez de Set-Content):
mysqldump -u root p my_db --no-data --no-create-db --no-create-info --routines --triggers --skip-opt --set-gtid-purged=OFF | Set-Content db_objects.sql
E o problema foi embora!
fonte
Pode ser que seu dump.sql tenha um caractere de lixo no início do seu arquivo ou uma linha em branco no início.
fonte
Se você não tem espaço suficiente ou não quer perder tempo descompactando-o, tente este comando.
Não se esqueça de substituir compressed-sqlfile.gz pelo nome do arquivo compactado.
A restauração .gz não funcionará sem o comando fornecido acima.
fonte
É necessário arquivar o problema dump.sql. Use o Sequel Pro para verificar o ecoding do arquivo. Deve haver caracteres ilegíveis no dump.sql.
fonte
Eu tive o mesmo problema, mas descobri que o arquivo de despejo era na verdade um backup do MSSQL Server, não do MySQL.
Às vezes, os arquivos de backup legados nos enganam. Verifique seu arquivo de despejo.
Na janela do terminal:
O resultado foi:
Para parar de processar o comando cat:
fonte
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
fonte
O arquivo que você está tentando importar é um arquivo zip. Descompacte o arquivo e tente importá-lo novamente.
fonte
No Linux, descompacte o arquivo usando gunzip. Edite o arquivo descompacte sql usando
Remova a primeira linha binária com esc dd vá para o final do arquivo com esc shift g remova a última linha binária com dd salve o arquivo esc x: Em seguida, reimporte para mysql com:
Fiz isso com um arquivo sql 20go de um backup jetbackup cpanel mysql. Tenha paciência para esperar vi fazendo o trabalho para arquivos grandes
fonte
Seu arquivo deve ter apenas extensão .sql, (.zip, .gz .rar), etc., não será compatível. exemplo: dump.sql
fonte
Você pode usar isso para corrigir o erro:
fonte
Sei que a questão dos pôsteres originais foi resolvida, mas vim aqui através do Google e as várias respostas eventualmente me levaram a descobrir que meu SQL foi despejado com um conjunto de caracteres padrão diferente daquele usado para importá-lo. Recebi o mesmo erro da pergunta original, mas como nosso despejo foi canalizado para outro cliente MySQL, não poderíamos seguir o caminho de abri-lo com outra ferramenta e salvá-lo de forma diferente.
Para nós, a solução acabou sendo a
--default-character-set=utf8mb4
opção, tanto na chamada demysqldump
quanto na chamada de importação viamysql
. Claro, o valor do parâmetro pode ser diferente para outros que enfrentam o mesmo problema, é apenas importante mantê-lo igual, já que a configuração padrão dos servidores (ou das ferramentas) pode ser qualquer conjunto de caracteres.fonte
mysqldump -uUSER -p user_db | gzip > user_db_$(date +"%Y%m%d_%H%M").sql.gz
então tentando importá-lo usandogunzip -c user_db_datetime.sql.gz | mysql -uUSER -p user_db
Velho mas bom!
No MacOS (Catalina 10.15.7) foi um pouco estranho: eu tive que renomear meu
dump.sql
paradump.zip
e depois disso, eu tive que usar o finder (!) Para descompactá-lo. no terminal,unzip dump.zip
odertar xfz dump.sql[or .gz .tar ...]
leva a mensagens de erro.Finalmente, o finder descompactou-o totalmente bem, depois disso eu pude importar o arquivo sem problemas.
fonte