Ich bin extrem neu in MySQL und führe es unter Windows aus. Ich versuche, eine Datenbank aus einem Dumpfile in MySQL wiederherzustellen, 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 es versucht, $ > mysql -u root -p -h localhost -D database --binary-mode -o < dump.sql
aber das ergab Folgendes: ERROR at line 1: Unknown command '\☻'.
Es handelt sich um eine 500-MB-Dump-Datei. Wenn ich den Inhalt mit gVIM ansehe, sehe ich nur Ausdrücke und Daten, die nicht verständlich sind. Auch wenn ich versuche, Inhalte aus der Datei zu kopieren, um hier etwas zu posten, kann ich nur Folgendes kopieren: SQLite format 3
Diese Art von scheint seltsam.
.sql
Datei mit seltsamen Zeichen und Kodierungen führte. Der zweite Versuch hat gut funktioniert.Antworten:
Der Verweis auf
--binary-mode
(eingeführt in MySQL 5.6.3) ist wahrscheinlich eine Ablenkung.Es hört sich nicht so an, als würden Sie sich dort mit einer mysqldump-Ausgabedatei befassen. Probieren Sie das
file
Dienstprogramm.Wenn du das nicht verstehst
ASCII text
Antwort erhalten, haben Sie es entweder mit etwas zu keine Speicherauszugsdatei vorliegtmysqldump
, oder mit etwas, das komprimiert wurde (z. B. mit gzip oder bzip2). d müssen vor dem Einleiten dekomprimiert werdenmysql
.Wenn du siehst
SQLite 3.x database
dann haben Sie definitiv Ihre Antwort ... es ist eine rohe SQLite-Datenbank, keine MySQL-Dump-Datei.In der Tat sind die ersten paar Bytes einer SQLite-Datenbank:
Beachten Sie, dass das 16. Oktett hier 0x00 ist, was die
ERROR: ASCII '\0' appeared in the statement...
Nachricht in diesem Fall erklärt. Der entsprechende Vorschlag--binary-mode
ist ein Fehlalarm.Windows-Benutzer: Das Dienstprogramm 'file' ist ein Tool von Unix, die Windows-Version finden Sie hier .
quelle
file MySQL.sql
er kehrt beim Ausführen zurückUTF-8 Unicode text, with very long lines
. Irgendwelche Ideen?less -S MySQL.sql
. Was siehst du? Sieht es aus wie eine MySQL-Dump-Datei? Sie sind größtenteils für Menschen lesbar. (q
Zum Verlassen verwenden.)-- MySQL dump 10.13 Distrib 5.7.22, for Linux (x86_64)
. Wenn Sie mit der Leertaste nach unten gehen, werden typische MySQL-Anweisungen angezeigt. Wenn ich jedoch weiter nach unten gehe, friert es in einer bestimmten Zeile ein. Dieselbe Zeile, die in der Fehlermeldung angezeigt wurde. Ich untersuchte es weiter und stellte fest, dass der MySQL-Speicherauszug beim ersten Mal nicht richtig entpackt worden war. Ich bin nicht sicher, was schief gelaufen ist, aber wenn ich es erneut entpacke, funktioniert es einwandfrei. Ich habe hier eine Antwort für andere hinzugefügt : stackoverflow.com/a/51432853/293280 Vielen Dank für Ihre Hilfe und Ihre schnelle Antwort. 👍Windows
Erstellen Sie Ihre Dump-Dateien mit diesem Befehl
Verwenden von:
quelle
Ich hatte diesen Fehler einmal, nachdem ich
mysqldump
auf Windows PowerShell so lief:Was ich getan habe, war dies zu ändern (Pipe statt Set-Content):
Und das Problem ging weg!
quelle
Ich auch in PowerShell
Ich bin auf dieses Problem gestoßen, als ich mit PowerShell mysqldump aufgerufen und > die Ausgabe in eine Datei umgeleitet habe . PowerShell verwendete beim Erstellen der Datei die falsche Codierung, und mir wurde derselbe Fehler angezeigt, als ich versuchte, die Datei mit zu importieren angezeigt, mysql .. <exported-file.sql zu importieren
Ich habe festgestellt, dass das Festlegen der Standardcodierung auf UTF8 in der PowerShell-Sitzung dieses Problem behoben hat.
Meine Auflösung - Getestete PowerShell 5.1:
Beispiel: Wie ich den Export erstellt habe (vereinfacht) :
Hinweis: Es wurde festgestellt, dass dies in PowerShell 4.0 nicht funktioniert
In meiner Entwicklungsumgebung wurde 5.1 ausgeführt, aber Prod ist auf 4.0 eingestellt, und mein anfänglicher Fix funktioniert nicht in älteren Versionen von PowerShell.
Verwenden müssen
| Set-Content -Encoding UTF8 $fileName
Dies wurde bereits von Ifedi vorgeschlagen
quelle
Haben Sie versucht, in Notepad ++ (oder einem anderen Editor) zu öffnen und uns in UTF-8 zu konvertieren / zu speichern?
Siehe: /programming/7256049/notepad-converting-ansi-encoded-file-to-utf-8
Eine andere Möglichkeit besteht darin, die Datei mit Textwrangle als UTF-8 zu öffnen und zu speichern: http://www.barebones.com/products/textwrangler/
quelle
Jemand hat mir einen komprimierten Gtar geschickt. War mit gtar nicht allzu vertraut, aber es ist ein anderes Komprimierungsformat.
Ich konnte es jedoch wie gewohnt dekomprimieren:
Und dann könnte ich den Import machen:
quelle
Lösung: Extrahieren Sie die Sicherungsdatei und stellen Sie diesen extrahierten SQL-Speicherauszug wieder her.
Beispiel:
Die Sicherung wurde als dump.sql.gz-Datei erstellt und mit gunzip cmd wie folgt extrahiert:
Und RESTORE extrahierte dump.sql-Datei.
Ref: Über den MySQL-Binär- und Interaktionsmodus.
http://dev.mysql.com/doc/refman/5.7/de/mysql-command-options.html#option_mysql_binary-mode
Es funktioniert für mich und alles eingestellt !!
quelle
In meinem Fall war die Datei beschädigt. Die Datenbank wurde mit Erweiterung komprimiert,
.bz2
aber es war tatsächlich ein.tar.bz2
.Das Dekomprimieren mit
bzip2 -dk
gibt keinen Fehler aus und generiert die Datei. Wenn Sie den Befehlfile
für die Dateiausgaben verwendenbzip2 compressed data, block size = 900k
, sieht es nicht einmal falsch aus, ihn zu verwenden.Ich musste verwenden
tar -xf myfile.bz2
quelle