Activer le mode binaire lors de la restauration d'une base de données à partir D'un dump SQL
je suis extrêmement nouveau à MySQL et je l'exécute sur Windows. J'essaie de restaurer une base de données à partir D'un fichier dump dans MySQL, mais j'obtiens l'erreur suivante:
$ >mysql -u root -p -h localhost -D database -o < dump.sql
ERROR: ASCII '"151900920"' 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 '"151900920"' is expected. Query: 'SQLite format 3'.
j'ai essayé de mettre --binary-mode
dans le fichier ini, mais il donne toujours la même erreur. Que dois-je faire? S'il vous plaît aider.
mise à JOUR
comme suggéré par Nick dans son commentaire j'ai essayé $ > mysql -u root -p -h localhost -D database --binary-mode -o < dump.sql
mais il m'a donné le après ERROR at line 1: Unknown command '☻'.
C'est un fichier dump de 500 Mo, et quand je vois son contenu en utilisant gVIM, tout ce que je peux voir c'est des expressions et des données qui ne sont pas compréhensibles.
10 réponses
je rencontre le même problème avec windows. Mon fichier dump a été créé avec Windows powershell et mysqldump comme:
mysqldump db > dump.sql
le problème vient de l'encodage par défaut de powershell est UTF16. Pour approfondir, nous pouvons utiliser L'utilitaire" file " de GNU, et il existe une version windows ici .
La sortie de mon fichier dump est:
Little-endian Unicode UTF-16 le texte, avec des lignes très longues, avec CRLF ligne terminateurs.
puis une conversion du système de codage est nécessaire, et il ya divers logiciels peuvent le faire. Par exemple dans emacs,
M-x set-buffer-file-coding-system
puis entrer le système de codage requis tel que utf-8.
et à l'avenir, pour un meilleur résultat mysqldump, utiliser:
mysqldump <dbname> -r <filename>
et puis la sortie est gérée par mysqldump
lui-même, mais pas de redirection de powershell.
référence: https://dba.stackexchange.com/questions/44721/error-while-restoring-a-database-from-an-sql-dump
avez-vous essayé d'ouvrir le bloc-notes++ (ou un autre éditeur) et de nous Convertir/nous sauver en UTF-8?
Voir: notepad++ conversion ansi fichier encodé en utf-8
une autre option peut être d'utiliser textwrangle pour ouvrir et enregistrer le fichier comme UTF-8: http://www.barebones.com/products/textwrangler /
peut être votre décharge.sql a un caractère de poubelle au début de votre fichier ou il y a une ligne vide au début.
extraire votre fichier avec l'outil d'archivage Tar. vous pouvez l'utiliser de cette façon:
tar xf example.sql.gz
j'ai eu cette erreur Une fois, après avoir lancé mysqldump
sur Windows PowerShell comme ça:
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
ce que j'ai fait, c'est le changer en ceci (pipe au lieu de Set-Content):
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
Et le problème a disparu!
Sa doit vous fichier de vidage.problème sql.Utilisez Sequel Pro vérifier votre fichier ecoding.Ça devrait être des personnages de poubelle dans ton trou.SQL.
j'ai eu le MÊME PROBLÈME, MAIS j'ai découvert que le fichier dump était en fait une sauvegarde de serveur MSSQL, pas MySQL.
parfois, les anciens fichiers de sauvegarde nous jouent des tours. Vérifiez votre fichier de vidage.
sur la fenêtre du terminal:
~$ cat mybackup.dmp
le résultat était:
TAPE??G?"5,^}???Microsoft SQL ServerSPAD^LSFMB8..... etc...
pour arrêter le traitement de la commande cat:
CTRL + C
dans Windows machine, s'il vous plaît suivre les étapes précédentes.
- ouvrir le fichier dans notepad.
- cliquez sur Enregistrer sous
- sélectionner le type D'encodage UTF-8.
maintenant source votre db.
votre dossier devrait être seulement .extension sql, (.zip. ,gz .rar) etc ne supportera pas. exemple: dump.sql