web-dev-qa-db-fra.com

Activer le mode binaire lors de la restauration d'une base de données à partir d'un cliché SQL

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. 

54
user1434997

Décompressez le fichier, puis importez à nouveau.

113
srinivas

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

41
cdarlint

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/

7

Extrayez votre fichier avec l’outil d’archivage Tar. vous pouvez l'utiliser de cette façon: 

tar xf example.sql.gz
6
Ghasem Pahlavan

Sous Windows, veuillez suivre les étapes précédentes.

  1. Ouvrir le fichier dans le bloc-notes.
  2. Cliquez sur Enregistrer sous
  3. Sélectionnez le type de codage UTF-8.

Maintenant, sourcez votre base de données.

5
Amit Kumar Rai

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!

4
Ifedi Okonkwo

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.

4
Subodh Ranadive

Vous devez déposer le problème dump.sql.Utilisez Sequel Pro pour vérifier votre fichier ecoding.

2
Datty Wang

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
2
Hugo Miura

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.

2
Dewlance

Votre fichier ne devrait contenir que l’extension .sql (.Zip, .gz .rar), etc.

0
Ibrahim Akbar

Le fichier que vous essayez d'importer est un fichier Zip. Décompressez le fichier et réessayez d'importer.

0
Javaid Mir