Erro ao importar o arquivo grande de despejo do MySQL que inclui BLOBs binários no Windows

7

Estou tentando importar um arquivo de despejo MySQL, que obtive da minha empresa de hospedagem, para minha máquina dev do Windows e estou com problemas.

Estou importando isso da linha de comando e estou recebendo um erro muito estranho:

ERRO 2005 (HY000) na linha 3118: host desconhecido do servidor MySQL '╖? Á d d ╦ ╦ ╦ ╦ ╦ h h h h ╪ ╪ ╪ ╪ ╪ ╪ ╪ ╪ Z + - $ ▼ ₧ ╬ Y.∞┌ | ↕╘l∞ / l╞⌂î7æ▌X█XE.ºΓ [; ╦ï ♣ éµ♂º╜┤║] .♂┐φ9dë╟█'╕ÿG∟═0à¡úè ♦ ╥ ↑ ù ♣ ♦ ¥ '╔NÑ' (11004)

Estouanexandoacapturadetelaporqueestousupondoqueosdadosbináriosserãoperdidos...

Eunãoseiexatamentequaléoproblema,masdoisproblemaspotenciaissãootamanhodoarquivo(2Gb)quenãoéinsanamentegrande,mastambémnãoétrivialmentepequeno,eooutroéofatodequemuitosestastabelastêmimagensJPGnelas(éporissoqueoarquivoé2Gbmaior,namaiorparte).Alémdisso,odumpfoitiradoemumamáquinaLinuxeestouimportandoissoparaoWindows,nãotenhocertezaseissopoderiaacrescentaraosproblemas(euentendoquenãodeveria)

Agora,esselixobinárioéomotivopeloqualeuachoqueasimagensnoarquivopodemserumproblema,maseuconseguiimportardumpssemelhantesdamesmaempresadehospedagemnopassado,entãonãotenhocertezadoquepoderiaseraquestão.

Alémdisso,tentarolharparaessearquivo(ealinha3118emparticular)émeioimpossível,dadoseutamanho(nãoestoumuitoàmãocomferramentasdelinhadecomandodoLinuxcomogrep,sed,etc).

Oarquivopodesercorrompido,masnãoseiexatamentecomoverificarisso.Oqueeubaixeifoiumarquivo.gz,queeu"testei" com o WinRar e ele diz que parece OK (eu estou assumindo que o gz tem algum tipo de CRC). Se você puder pensar em uma maneira melhor de testá-lo, adoraria tentar isso.

Alguma idéia do que poderia estar acontecendo / como superar esse erro?

Eu não sou muito apegado aos dados em particular, já que eu só quero isso como uma cópia para o dev, então se eu tiver que perder alguns registros, eu estou bem com isso, contanto que o esquema permaneça perfeitamente som.

Obrigado!
Daniel

    
por Daniel Magliola 05.01.2011 / 10:08

4 respostas

11

Por esse motivo, sempre uso mysqldump --hex-blob .

Re-despeje o banco de dados codificando os blobs usando este switch e ele funcionará.

Você pode tentar importá-lo usando um IDE do windows mysql client como o sqlyog ou o administrador do mysql. Funcionou para mim uma vez.

    
por 05.01.2011 / 10:38
5

Você não precisa necessariamente usar a opção --hex-blob. Acabei de resolver este problema e o problema era que eu precisava que o --max_allowed_packet fosse definido com um valor grande o suficiente para acomodar o maior blob de dados que eu estaria carregando. Seu comando de restauração deve ser parecido com:

mysql -u user -h hostname --max_allowed_packet=32M dbname < dumpfile.sql

Se você usar a opção --hex-blob, você aumentará significativamente o tamanho do seu backup - por um fator de 2 ou mais. OBSERVAÇÃO: para restaurar os mesmos dados que eu restaurei com o comando acima, configure o --max_allowed_packet = 64M em my.ini (cnf) e reinicie o servidor AS WELL AS configurando-o para 64M na linha de comando para restaurar um dump criado com a opção --hex-blob.

    
por 07.05.2015 / 16:43
2

Ainda pode haver um problema devido ao grande tamanho do arquivo, portanto, certifique-se de definir max-allowed-packet para algum valor alto (param para o comando mysql).

    
por 03.08.2011 / 21:00
0

Eu tenho problema semelhante ao restaurar um arquivo de despejo do servidor Linux que contém dados binários. Os erros são algo como ERROR 1064 (42000) at line 551: You have an error in your SQL syntax;

Este arquivo de despejo pode ser importado com sucesso para o servidor Linux, mas não para o Windows.

Eu tentei com a opção --hex-blob e --max_allowed_packet e até mesmo transferir dados com o pipeline em vez do arquivo .sql, mas sem sorte.

Eu finalmente resolvi isso usando o MySQL Workbench, e o comando gerado é como

Running: mysql.exe --defaults-file="c:\users\admini~1\appdata\local\temp\tmp1fzxkx.cnf"  --protocol=tcp --host=localhost --user=root --port=3306 --default-character-set=utf8 --comments --database=platform  < "E:\direcotory\dump.sql"

Então eu tentei com --default-character-set=utf8 da linha de comando e funcionou. Espero que isso ajude alguém.

    
por 10.08.2016 / 10:27