Soy extremadamente nuevo en MySQL y lo estoy ejecutando en Windows. Estoy tratando de restaurar una base de datos desde un archivo de volcado en MySQL, pero 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'.
Lo intenté $ > mysql -u root -p -h localhost -D database --binary-mode -o < dump.sql
pero esto me dio lo siguiente: ERROR at line 1: Unknown command '\☻'.
es un archivo de volcado de 500 Mb, y cuando veo su contenido usando gVIM, todo lo que puedo ver son expresiones y datos que no son comprensibles. Además, cuando trato de copiar el contenido del archivo para publicar aquí, todo lo que puedo copiar es: SQLite format 3
esto parece extraño.
.sql
archivo con caracteres extraños y codificaciones. El segundo intento funcionó bien.Respuestas:
La referencia a
--binary-mode
(introducida en MySQL 5.6.3) es probablemente una distracción.No parece que esté tratando con un archivo de salida mysqldump, allí. Prueba la
file
utilidad.Si no obtiene la
ASCII text
respuesta, está lidiando con algo que no es un archivo de volcadomysqldump
o con algo que ha sido comprimido (con gzip o bzip2, por ejemplo), que usted ' Necesitaría descomprimir antes de conectarlomysql
.Si ve,
SQLite 3.x database
entonces definitivamente tiene su respuesta ... es una base de datos SQLite sin formato, no un archivo de volcado de MySQL.De hecho, los primeros bytes de una base de datos SQLite son estos:
Tenga en cuenta que el 16to octeto aquí es 0x00, explicando el
ERROR: ASCII '\0' appeared in the statement...
mensaje en este caso. La sugerencia--binary-mode
apropiada es una falsa alarma.Usuarios de Windows: la utilidad 'archivo' es una herramienta de Unix, pero la versión de Windows se puede encontrar aquí .
fuente
file MySQL.sql
vuelveUTF-8 Unicode text, with very long lines
. ¿Algunas ideas?less -S MySQL.sql
. ¿Que ves? ¿Se parece a un archivo de volcado de MySQL? Son en su mayor parte legibles por humanos. (Useq
para salir.)-- MySQL dump 10.13 Distrib 5.7.22, for Linux (x86_64)
. Y moverse hacia abajo mediante la barra espaciadora muestra las instrucciones típicas de MySQL. Sin embargo, si sigo bajando, se congela en una línea determinada. La misma línea que apareció en el mensaje de error. Lo investigué más y descubrí que el volcado de MySQL no se había descomprimido correctamente la primera vez. No estoy seguro de qué salió mal, pero cuando vuelvo a descomprimir, funciona bien. Agregué una respuesta al respecto aquí para otros: stackoverflow.com/a/51432853/293280 Muchas gracias por su ayuda y respuesta rápida. 👍Ventanas
Crea tus archivos de volcado con este comando
Utilizando:
fuente
Tuve este error una vez, después de ejecutar
mysqldump
en Windows PowerShell así:Lo que hice fue cambiarlo a esto (canalizar a Set-Content):
¡Y el problema se fue!
fuente
Yo también en PowerShell
Encontré este problema cuando estaba usando PowerShell para llamar a mysqldump y > para canalizar la salida al archivo. PowerShell estaba usando una codificación incorrecta al crear el archivo y se me presentó el mismo error cuando intenté importar el archivo usando mysql .. <exported-file.sql
Descubrí que establecer la codificación predeterminada en UTF8 en la sesión de PowerShell resolvió este problema.
Mi resolución - Probado PowerShell 5.1:
Ejemplo: cómo estaba produciendo la exportación (simplificado) :
Nota: Descubierto que esto no funciona en PowerShell 4.0
Mi entorno de desarrollo ejecutaba 5.1, pero prod está en 4.0 y mi solución inicial no funciona en versiones anteriores de PowerShell.
Necesitará usar
| Set-Content -Encoding UTF8 $fileName
Esto ya fue sugerido por Ifedi
fuente
¿Has intentado abrir en Notepad ++ (u otro editor) y convertirnos / guardarnos en UTF-8?
Ver: /programming/7256049/notepad-converting-ansi-encoded-file-to-utf-8
Otra opción puede ser usar textwrangle para abrir y guardar el archivo como UTF-8: http://www.barebones.com/products/textwrangler/
fuente
Alguien me envió un gtar comprimido. Ni siquiera estaba familiarizado con gtar, pero es otro formato de compresión.
Sin embargo, pude descomprimirlo igual que de costumbre:
Y luego podría hacer la importación:
fuente
Solución: extraiga el archivo de copia de seguridad y luego restaure este volcado sql extraído.
Ejemplo:
La copia de seguridad se ha tomado como un archivo dump.sql.gz y se extrae usando cmd gunzip de la siguiente manera,
Y RESTORE extrajo el archivo dump.sql.
Ref: Acerca del modo binario e interactivo de MySQL.
http://dev.mysql.com/doc/refman/5.7/en/mysql-command-options.html#option_mysql_binary-mode
¡Funciona para mí y todo listo!
fuente
En mi caso, el archivo estaba dañado. La base de datos estaba comprimida con extensión,
.bz2
pero en realidad era una.tar.bz2
.Descomprimir usando
bzip2 -dk
no genera ningún error y genera el archivo. Usar el comandofile
en las salidas del archivobzip2 compressed data, block size = 900k
para que ni siquiera se vea mal usarlo.Tuve que usar
tar -xf myfile.bz2
fuente