131 votes

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

Je suis extrêmement novice en matière de MySQL et je l'exécute sous 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é de mettre --binary-mode dans le fichier ini mais cela donne toujours la même erreur. Que dois-je faire ? Veuillez m'aider.

UPDATE

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 cela m'a donné le résultat suivant ERROR at line 1: Unknown command '\'. Il s'agit d'un fichier de vidage de 500 Mo, et lorsque je visualise son contenu à l'aide de gVIM, je ne vois que des expressions et des données incompréhensibles.

294voto

srinivas Points 130

Décompressez le fichier, puis réimportez-le.

74voto

cdarlint Points 1140

Je rencontre le même problème dans la restauration d'un fichier dump par Windows. Mon fichier dump a été créé avec Windows powershell et mysqldump comme :

mysqldump db > dump.sql

Le problème vient du fait que l'encodage par défaut de powershell est UTF16. Pour approfondir ce problème, nous pouvons utiliser l'utilitaire "file" de GNU, et il existe une version Windows aquí .
La sortie de mon fichier de vidage est :

Texte Unicode UTF-16 Little-endian, avec de très longues lignes, avec des terminaisons de ligne CRLF.

Ensuite, une conversion du système de codage est nécessaire, et il existe plusieurs logiciels qui peuvent le faire. Par exemple dans emacs,

M-x set-buffer-file-coding-system

puis saisissez le système de codage requis tel que utf-8.

Et à l'avenir, pour un meilleur résultat de mysqldump, utilisez :

mysqldump <dbname> -r <filename>

et ensuite la sortie est traitée par mysqldump mais pas la redirection de powershell.

référence : https://dba.stackexchange.com/questions/44721/error-while-restoring-a-database-from-an-sql-dump

30voto

Amit Kumar Rai Points 309

Dans la machine Windows, veuillez suivre les étapes précédentes.

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

Maintenant, créez votre base de données.

10voto

Ifedi Okonkwo Points 53

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, 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 !

10voto

Ghasem Pahlavan Points 292

Extrayez votre fichier avec l'outil d'archivage Tar. Vous pouvez l'utiliser de cette manière :

tar xf example.sql.gz

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X