mysql - restoring - Habilitar el modo binario al restaurar una base de datos desde un volcado de SQL
restaurar base de datos sql server 2008 (12)
Soy extremadamente nuevo en MySQL y lo estoy ejecutando en Windows. Estoy intentando restaurar una base de datos desde un archivo de volcado en MySQL, pero me aparece el siguiente error:
$ >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''.
He intentado poner --binary-mode
en el archivo ini pero todavía da el mismo error. ¿Qué tengo que hacer? Por favor ayuda.
ACTUALIZAR
Como lo sugirió Nick en su comentario, probé $ > mysql -u root -p -h localhost -D database --binary-mode -o < dump.sql
pero me dio el siguiente ERROR at line 1: Unknown command ''/☻''.
Es un archivo de volcado de 500 Mb, y cuando veo su contenido utilizando gVIM, todo lo que puedo ver son expresiones y datos que no son comprensibles.
¿Ha intentado abrir en notepad ++ (u otro editor) y convertir / guardarnos en UTF-8?
Ver: notepad ++ que convierte el archivo codificado en ansi a utf-8
Otra opción puede ser usar textwrangle para abrir y guardar el archivo como UTF-8: http://www.barebones.com/products/textwrangler/
Debe archivar el problema dump.sql. Use Sequel Pro para verificar el archivo ecoding. Debe tener caracteres basura en su dump.sql.
Descomprima el archivo, y luego vuelva a importar.
El archivo que está intentando importar es un archivo zip. Descomprima el archivo y luego intente importar de nuevo.
En la máquina de Windows, siga los pasos anteriores.
- Abrir archivo en el bloc de notas.
- Haga clic en Guardar como
- Seleccione el tipo de codificación UTF-8.
Ahora fuente tu db.
Extraiga su archivo con la herramienta de archivo Tar. Puedes usarlo de esta manera:
tar xf example.sql.gz
Me encuentro con el mismo problema en Windows restaurar un archivo de volcado. Mi archivo de volcado fue creado con windows powershell y mysqldump como:
mysqldump db > dump.sql
El problema viene de la codificación predeterminada de powershell es UTF16. Para profundizar en esto, podemos usar la utilidad de "archivo" de GNU, y existe una versión de Windows here .
La salida de mi archivo de volcado es:
Little-endian UTF-16 Unicode texto, con líneas muy largas, con terminadores de línea CRLF.
Entonces se necesita una conversión del sistema de codificación, y hay varios programas que pueden hacer esto. Por ejemplo en emacs,
Mx set-buffer-file-coding-system
luego ingrese el sistema de codificación requerido como utf-8.
Y en el futuro, para un mejor resultado de mysqldump, use:
mysqldump <dbname> -r <filename>
y luego la salida es manejada por mysqldump
, pero no por la redirección de powershell.
referencia: https://dba.stackexchange.com/questions/44721/error-while-restoring-a-database-from-an-sql-dump
Puede ser que su archivo dump.sql tenga caracteres de basura al principio de su archivo o haya una línea en blanco al principio.
Si no tiene espacio suficiente o no quiere perder tiempo en descomprimirlo, pruebe este comando.
gunzip < compressed-sqlfile.gz | mysql -u root -p
No olvide reemplazar el archivo comprimido-sqlfile.gz con su nombre de archivo comprimido.
.gz restore no funcionará sin el comando que proporcioné anteriormente.
Su archivo debe ser solo de extensión .sql, (.zip, .gz .rar), etc. no será compatible. ejemplo: dump.sql
Tuve el mismo problema, pero descubrí que el archivo de volcado era en realidad una copia de seguridad del servidor MSSQL, no MySQL.
A veces, los archivos de respaldo heredados nos engañan. Revise su archivo de volcado.
En la ventana de la terminal:
~$ cat mybackup.dmp
El resultado fue:
TAPE??G?"5,^}???Microsoft SQL ServerSPAD^LSFMB8..... etc...
Para detener el procesamiento del comando cat:
CTRL + C
Tuve este error una vez, después de ejecutar mysqldump
en Windows PowerShell así:
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
Lo que hice fue cambiarlo a esto (canalización en vez de Establecer contenido):
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
¡Y el problema se fue!