Je suis extrêmement nouveau sur MySQL et je l’utilise sous Windows. J'essaie de restaurer une base de données à partir d'un fichier de vidage dans MySQL, mais le message d'erreur suivant s'affiche:
$ >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é de mettre --binary-mode
dans le fichier ini mais cela donne toujours la même erreur. Que devrais-je faire? S'il vous plaît aider.
METTRE &AGRAVE; JOUR
Comme Nick l’a suggéré 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 ERROR at line 1: Unknown command '\☻'.
Il s’agit d’un fichier de vidage de 500 Mo, et lorsque je visualise son contenu avec gVIM, je ne vois que des expressions et des données incompréhensibles.
Décompressez le fichier, puis importez à nouveau.
Je rencontre le même problème dans Windows en restaurant un fichier de vidage. Mon fichier de vidage a été créé avec Windows PowerShell et mysqldump comme:
mysqldump db > dump.sql
Le problème vient du codage par défaut de powershell, UTF16. Pour approfondir cette question, nous pouvons utiliser l’utilitaire "file" de GNU, et il existe une version Windows ici .
La sortie de mon fichier de vidage est:
Texte Unicode UTF-16 Little-endian, avec de très longues lignes, avec terminaisons de ligne CRLF.
Ensuite, une conversion de système de codage est nécessaire, et différents logiciels peuvent le faire. Par exemple dans Emacs,
M-x set-buffer-file-coding-system
puis entrez le système de codage requis tel que utf-8.
Et dans le futur, pour un meilleur résultat avec mysqldump, utilisez:
mysqldump <dbname> -r <filename>
</ b>
et ensuite la sortie est gérée par mysqldump
elle-même mais pas la 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 Notepad ++ (ou un autre éditeur) et de nous convertir/nous enregistrer en UTF-8?
Voir: notepad ++ conversion du fichier encodé ansi en utf-8
Une autre option consiste à utiliser textwrangle pour ouvrir et enregistrer le fichier au format UTF-8: http://www.barebones.com/products/textwrangler/
Extrayez votre fichier avec l’outil d’archivage Tar. vous pouvez l'utiliser de cette façon:
tar xf example.sql.gz
Sous Windows, veuillez suivre les étapes précédentes.
Maintenant, sourcez votre base de données.
J'ai eu cette erreur une fois, après avoir exécuté mysqldump
sur Windows PowerShell comme ceci:
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 était de 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 est parti!
Peut-être que votre fichier dump.sql a un caractère poubelle au début de votre fichier ou Une ligne vide apparaît au début.
Vous devez déposer le problème dump.sql.Utilisez Sequel Pro pour vérifier votre fichier ecoding.
J'ai eu le même problème, mais j'ai découvert que le fichier de vidage était en fait une sauvegarde du serveur MSSQL, pas de MySQL.
Parfois, les fichiers de sauvegarde hérités 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
Si vous ne disposez pas de suffisamment d'espace ou si vous ne voulez pas perdre de temps à le décompresser, essayez cette commande.
gunzip < compressed-sqlfile.gz | mysql -u root -p
N'oubliez pas de remplacer comprimé-sqlfile.gz par votre nom de fichier compressé.
La restauration .gz ne fonctionnera pas sans la commande que j'ai fournie ci-dessus.
Votre fichier ne devrait contenir que l’extension .sql (.Zip, .gz .rar), etc.
Le fichier que vous essayez d'importer est un fichier Zip. Décompressez le fichier et réessayez d'importer.