Je suis extrêmement nouveau sur MySQL et je l'exécute sur Windows. J'essaie de restaurer une base de données à partir d'un fichier de vidage dans MySQL, mais j'obtiens l'erreur suivante:
$ >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'.
J'ai essayé $ > mysql -u root -p -h localhost -D database --binary-mode -o < dump.sql
mais cela m'a donné ce qui suit. ERROR at line 1: Unknown command '\☻'.
Il s'agit d'un fichier de vidage de 500 Mo, et lorsque je regarde son contenu à l'aide de gVIM, tout ce que je peux voir, ce sont des expressions et des données qui ne sont pas compréhensibles. De plus, lorsque j'essaie de copier le contenu du fichier pour le publier ici, tout ce que je peux copier est: SQLite format 3
Ce genre de chose semble étrange.
.sql
fichier avec des caractères et des encodages étranges. La deuxième tentative a bien fonctionné.Réponses:
La référence à
--binary-mode
(introduite dans MySQL 5.6.3) est probablement une distraction.Il ne semble pas que vous ayez affaire à un fichier de sortie mysqldump, là. Essayez l'
file
utilitaire.Si vous n'obtenez pas la
ASCII text
réponse, vous avez affaire à quelque chose qui n'est pas du tout un fichier de vidagemysqldump
, ou vous avez affaire à quelque chose qui a été compressé (avec gzip ou bzip2, par exemple), que vous ' d besoin de décompresser avant de le canalisermysql
.Si vous voyez,
SQLite 3.x database
vous avez certainement votre réponse ... c'est une base de données SQLite brute, pas un fichier de vidage MySQL.En effet, les premiers octets d'une base de données SQLite sont les suivants:
Notez que le 16e octet est ici 0x00, expliquant le
ERROR: ASCII '\0' appeared in the statement...
message dans ce cas. La suggestion--binary-mode
appropriée est une fausse alarme.Utilisateurs Windows: l'utilitaire 'file' est un outil d'Unix, mais la version Windows peut être trouvée ici .
la source
file MySQL.sql
elle revientUTF-8 Unicode text, with very long lines
. Des idées?less -S MySQL.sql
. Que vois-tu? Cela ressemble-t-il à un fichier de vidage MySQL? Ils sont pour la plupart lisibles par l'homme. (Utilisezq
pour sortir.)-- MySQL dump 10.13 Distrib 5.7.22, for Linux (x86_64)
. Et le déplacement vers le bas via la barre d'espace affiche des instructions MySQL typiques. Cependant, si je continue à descendre, il gèle sur une certaine ligne. La même ligne qui est apparue dans le message d'erreur. Je l'ai approfondi et j'ai découvert que le vidage MySQL n'avait pas été décompressé correctement la première fois. Je ne sais pas ce qui s'est mal passé, mais quand je décompresse à nouveau, cela fonctionne très bien. J'ai ajouté une réponse à ce sujet ici pour les autres: stackoverflow.com/a/51432853/293280 Merci beaucoup pour votre aide et votre réponse rapide. 👍les fenêtres
Créez vos fichiers de vidage avec cette commande
En utilisant:
la source
J'ai eu cette erreur une fois, après avoir exécuté
mysqldump
sur Windows PowerShell comme ceci:Ce que j'ai fait était de le changer en ceci (à la place de Set-Content):
Et le problème a disparu!
la source
Moi aussi dans PowerShell
J'ai rencontré ce problème lorsque j'utilisais PowerShell pour appeler mysqldump et > pour diriger la sortie vers un fichier. PowerShell utilisait un encodage incorrect lors de la création du fichier et j'ai été confronté à la même erreur lorsque j'ai essayé d'importer le fichier en utilisant mysql .. <exports-file.sql
J'ai constaté que la définition du codage par défaut sur UTF8 dans la session PowerShell a résolu ce problème.
Ma résolution - Tested PowerShell 5.1:
Exemple: Comment je produisais l'exportation (simplifiée) :
Remarque: découvert que cela ne fonctionne pas sur PowerShell 4.0
Mon environnement de développement fonctionnait sous 5.1, mais prod est à 4.0 et mon correctif initial ne fonctionne pas dans les anciennes versions de PowerShell.
Besoin d'utiliser
| Set-Content -Encoding UTF8 $fileName
Cela a déjà été suggéré par Ifedi
la source
Avez-vous essayé d'ouvrir dans notepad ++ (ou un autre éditeur) et de nous convertir / enregistrer en UTF-8?
Voir: /programming/7256049/notepad-converting-ansi-encoded-file-to-utf-8
Une autre option peut être d'utiliser textwrangle pour ouvrir et enregistrer le fichier au format UTF-8: http://www.barebones.com/products/textwrangler/
la source
Quelqu'un m'a envoyé un gtar compressé. Je ne connaissais même pas trop gtar, mais c'est un autre format de compression.
Cependant, j'ai pu le décompresser comme d'habitude:
Et puis je pourrais faire l'importation:
la source
Solution: extrayez le fichier de sauvegarde, puis restaurez ce vidage sql extrait.
Exemple :
La sauvegarde a été prise en tant que fichier dump.sql.gz et extrayez-la à l'aide de gunzip cmd comme suit,
Et RESTORE a extrait le fichier dump.sql.
Réf: À propos du mode binaire et interactif MySQL.
http://dev.mysql.com/doc/refman/5.7/en/mysql-command-options.html#option_mysql_binary-mode
Cela fonctionne pour moi et tout ensemble !!
la source
Dans mon cas, le fichier était corrompu. La base de données a été compressée avec extension
.bz2
mais c'était en fait un fichier.tar.bz2
.La décomposition en utilisant
bzip2 -dk
ne génère aucune erreur et génère le fichier. En utilisant la commandefile
sur les sorties de fichiersbzip2 compressed data, block size = 900k
, il ne semble même pas mauvais de l'utiliser.Je devais utiliser
tar -xf myfile.bz2
la source