Eu sou extremamente novo no MySQL e estou executando no Windows. Estou tentando restaurar um banco de dados de um arquivo de despejo 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, $ > mysql -u root -p -h localhost -D database --binary-mode -o < dump.sql
mas isso me deu o seguinte ERROR at line 1: Unknown command '\☻'.
É um arquivo de despejo de 500 Mb e, quando visualizo seu conteúdo usando o gVIM, tudo o que vejo são expressões e dados que não são compreensíveis. Além disso, quando tento copiar o conteúdo do arquivo para postar aqui, tudo o que posso copiar é: SQLite format 3
Isso parece estranho.
.sql
arquivo com caracteres e codificações estranhos. A segunda tentativa funcionou bem.Respostas:
A referência a
--binary-mode
(introduzida no MySQL 5.6.3) é provavelmente uma distração.Não parece que você está lidando com um arquivo de saída do mysqldump. Experimente o
file
utilitário.Se você não obtiver a
ASCII text
resposta, estará lidando com algo que não é um arquivo de despejomysqldump
ou com algo que foi compactado (com gzip ou bzip2, por exemplo), que você ' d precisa descompactar antes de inseri-lomysql
.Se você vê
SQLite 3.x database
, definitivamente tem sua resposta ... é um banco de dados SQLite bruto, não um arquivo de despejo do MySQL.De fato, os primeiros bytes de um banco de dados SQLite são estes:
Observe que o 16º octeto aqui é 0x00, explicando a
ERROR: ASCII '\0' appeared in the statement...
mensagem neste caso. A sugestão--binary-mode
apropriada é um alarme falso.Usuários do Windows: o utilitário 'file' é uma ferramenta do Unix, mas a versão do Windows pode ser encontrada aqui .
fonte
file MySQL.sql
lo, retornaUTF-8 Unicode text, with very long lines
. Alguma ideia?less -S MySQL.sql
. O que você vê? Parece um arquivo de despejo do MySQL? Eles são na maioria das vezes legíveis por humanos. (Useq
para sair.)-- MySQL dump 10.13 Distrib 5.7.22, for Linux (x86_64)
. E descer a barra de espaço mostra instruções típicas do MySQL. No entanto, se eu continuar descendo, ele congela em uma determinada linha. A mesma linha que apareceu na mensagem de erro. Analisei mais a fundo e descobri que o despejo do MySQL não havia sido descompactado corretamente na primeira vez. Não tenho certeza do que deu errado, mas quando eu descompactar, ele funciona bem. Adicionei uma resposta sobre isso aqui para outras pessoas: stackoverflow.com/a/51432853/293280 Muito obrigado por sua ajuda e resposta rápida. Josjanelas
Crie seus arquivos de despejo com este comando
Usando:
fonte
Eu tive esse erro uma vez, depois de executar
mysqldump
no Windows PowerShell da seguinte maneira:O que fiz foi alterá-lo para este (canal em vez de Set-Content):
E o problema foi embora!
fonte
Eu também no PowerShell
Encontrei esse problema quando estava usando o PowerShell para chamar o mysqldump e > canalizar a saída para o arquivo. O PowerShell estava usando a codificação incorreta ao criar o arquivo e recebi o mesmo erro ao tentar importar o arquivo usando o mysql .. <exported-file.sql
Eu descobri que a configuração da codificação padrão como UTF8 na sessão do PowerShell resolveu esse problema.
Minha resolução - Testado PowerShell 5.1:
Exemplo: como eu estava produzindo a exportação (simplificada) :
Nota: Descoberto isso não funciona no PowerShell 4.0
Meu ambiente de desenvolvimento estava executando o 5.1, mas o prod está em 4.0 e minha correção inicial não funciona nas versões mais antigas do PowerShell.
Precisa usar
| Set-Content -Encoding UTF8 $fileName
Isso já foi sugerido por Ifedi
fonte
Você já tentou abrir no notepad ++ (ou outro editor) e nos converter / salvar em UTF-8?
Consulte: /programming/7256049/notepad-converting-ansi-encoded-file-to-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
Alguém me enviou um gtar comprimido. Não conhecia muito o gtar, mas é outro formato de compactação.
No entanto, consegui descompactá-lo da mesma maneira que de costume:
E então eu poderia fazer a importação:
fonte
Solução: extraia o arquivo de backup e, em seguida, restaure esse despejo sql extraído.
Exemplo:
O backup foi obtido como arquivo dump.sql.gz e extraído usando o gunzip cmd da seguinte maneira:
E RESTORE extraiu o arquivo dump.sql.
Ref: Sobre o modo binário e interativo do MySQL.
http://dev.mysql.com/doc/refman/5.7/en/mysql-command-options.html#option_mysql_binary-mode
Funciona para mim e tudo pronto!
fonte
No meu caso, o arquivo foi corrompido. O banco de dados foi compactado com extensão,
.bz2
mas na verdade era um.tar.bz2
.Descomprovar usando
bzip2 -dk
não gera nenhum erro e gera o arquivo. Usar o comandofile
nas saídas do arquivobzip2 compressed data, block size = 900k
para que nem pareça errado usá-lo.Eu tive que usar
tar -xf myfile.bz2
fonte