it-swarm.com.de

Aktivieren Sie den Binärmodus, während Sie eine Datenbank aus einem SQL-Dump wiederherstellen

Ich bin extrem neu bei MySQL und betreibe es unter Windows. Ich versuche, eine Datenbank aus einem Dumpfile in MySQL wiederherzustellen, ich erhalte jedoch die folgende Fehlermeldung:

$ >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'.

Ich habe versucht, --binary-mode in die Ini-Datei einzufügen, aber es gibt immer noch den gleichen Fehler. Was soll ich machen? Bitte helfen 

UPDATE

Wie Nick in seinem Kommentar vorgeschlagen hatte, versuchte ich $ > mysql -u root -p -h localhost -D database --binary-mode -o < dump.sql, aber es gab mir folgenden ERROR at line 1: Unknown command '\☻'. .__: Es handelt sich um eine 500 MB-Dump-Datei, und wenn ich deren Inhalt mit gVIM betrachte, sehe ich nur Ausdrücke und Daten, die nicht nachvollziehbar sind. 

54
user1434997

Entpacken Sie die Datei und importieren Sie sie erneut.

113
srinivas

Ich habe das gleiche Problem bei der Wiederherstellung einer Speicherauszugsdatei in Windows. Meine Dump-Datei wurde mit Windows-Powershell und mysqldump erstellt:

mysqldump db > dump.sql

Das Problem ergibt sich aus der Standardkodierung von Powershell ist UTF16. Um dies näher zu untersuchen, können wir das "file" -Dienstprogramm von GNU verwenden, und es gibt eine Windows-Version here
Die Ausgabe meiner Dump-Datei lautet:

UTF-16-Unicode-Text von Little Endian mit sehr langen Zeilen und CRLF-Zeilenabschlusszeichen.

Dann ist eine Konvertierung des Kodierungssystems erforderlich, und es gibt verschiedene Software, die dies tun kann. Zum Beispiel in Emacs, 

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

dann geben Sie das erforderliche Kodierungssystem wie utf-8 ein.

Für ein besseres mysqldump-Ergebnis verwenden Sie in der Zukunft:

mysqldump <dbname> -r <filename> </ b>

und dann wird die Ausgabe von mysqldump selbst gehandhabt, nicht aber der Umleitung von Powershell.

referenz: https://dba.stackexchange.com/questions/44721/error-while-restoring-a-database-from-an-sql-dump

41
cdarlint

Haben Sie versucht, in Notepad ++ (oder einem anderen Editor) zu öffnen und in UTF-8 zu konvertieren/zu speichern?

Siehe: notepad ++ konvertiert die ansi-codierte Datei in utf-8

Eine andere Option kann die Verwendung von textwrangle zum Öffnen und Speichern der Datei als UTF-8 sein: http://www.barebones.com/products/textwrangler/

7

Extrahieren Sie Ihre Datei mit dem Tar-Archivierungswerkzeug. Sie können es auf folgende Weise verwenden: 

tar xf example.sql.gz
6
Ghasem Pahlavan

Befolgen Sie auf einem Windows-Computer die vorhergehenden Schritte.

  1. Datei im Merkzettel öffnen.
  2. Klicken Sie auf Speichern unter
  3. Wählen Sie den Codierungstyp UTF-8.

Jetzt Quelle deine DB.

5
Amit Kumar Rai

Ich hatte diesen Fehler einmal, nachdem ich mysqldump unter Windows PowerShell ausgeführt hatte:

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

Was ich getan habe, war dies zu ändern (Pipe statt 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

Und das Problem ist weg!

4
Ifedi Okonkwo

Möglicherweise hat Ihr dump.sql einen Abfallzeichen am Anfang Ihrer Datei oder.

4
Subodh Ranadive

Sie müssen die Datei dump.sql datei ablegen. Verwenden Sie Sequel Pro, um Ihre Datei ecoding zu überprüfen.

2
Datty Wang

Ich hatte das gleiche Problem, stellte jedoch fest, dass es sich bei der Sicherungsdatei eigentlich um eine MSSQL Server-Sicherung und nicht um MySQL handelte.

Manchmal spielen ältere Backup-Dateien uns einen Streich. Überprüfen Sie Ihre Dump-Datei.

Im Terminalfenster:

~$ cat mybackup.dmp 

Das Ergebnis war:

TAPE??G?"5,^}???Microsoft SQL ServerSPAD^LSFMB8..... etc...

So beenden Sie die Verarbeitung des cat-Befehls:

CTRL + C
2
Hugo Miura

Wenn Sie nicht über genügend Speicherplatz verfügen oder keine Zeit zum Dekomprimieren benötigen, versuchen Sie diesen Befehl.

gunzip < compressed-sqlfile.gz | mysql -u root -p

Vergessen Sie nicht, komprimierte-sqlfile.gz durch Ihren komprimierten Dateinamen zu ersetzen.

.gz restore funktioniert nicht ohne den oben angegebenen Befehl.

2
Dewlance

Ihre Datei sollte nur die Erweiterung .sql haben (.Zip, .gz .rar) usw. wird nicht unterstützt . Beispiel: dump.sql

0
Ibrahim Akbar

Die zu importierende Datei ist eine Zip-Datei. Entpacken Sie die Datei und versuchen Sie, erneut zu importieren.

0
Javaid Mir