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 versucht, --binary-mode
die INI-Datei einzufügen, aber es gibt immer noch den gleichen Fehler. Was soll ich machen? Bitte helfen Sie.
AKTUALISIEREN
Wie von Nick in seinem Kommentar vorgeschlagen, habe ich es versucht, $ > mysql -u root -p -h localhost -D database --binary-mode -o < dump.sql
aber es gab mir Folgendes: ERROR at line 1: Unknown command '\☻'.
Es ist eine 500-MB-Dump-Datei, und wenn ich ihren Inhalt mit gVIM ansehe, sehe ich nur Ausdrücke und Daten, die nicht verständlich sind.
mysql
database
mysqldump
database-restore
user1434997
quelle
quelle
.sql
Datei mit seltsamen Zeichen und Codierungen führte. Der zweite Versuch hat gut funktioniert.Antworten:
Entpacken Sie die Datei und importieren Sie sie erneut.
quelle
Ich habe das gleiche Problem in Windows beim Wiederherstellen einer Dump-Datei. Meine Dump-Datei wurde mit Windows Powershell und Mysqldump wie folgt erstellt:
mysqldump db > dump.sql
Das Problem ergibt sich aus der Standardcodierung von Powershell: UTF16. Zu schauen tiefer in diese, können wir „Datei“ Dienstprogramm von GNU verwenden, und es gibt eine Windows - Version hier .
Die Ausgabe meiner Dump-Datei lautet:
Little-Endian-UTF-16-Unicode-Text mit sehr langen Zeilen und CRLF-Zeilenabschlüssen.
Dann ist eine Konvertierung des Codierungssystems erforderlich, und es gibt verschiedene Software, die dies tun können. Zum Beispiel in Emacs,
M-x set-buffer-file-coding-system
Geben Sie dann das erforderliche Codierungssystem wie utf-8 ein.
Und in Zukunft verwenden Sie für ein besseres mysqldump-Ergebnis:
mysqldump <dbname> -r <filename>
und dann wird die Ausgabe von
mysqldump
selbst behandelt, aber nicht die Umleitung von Powershell.Referenz: /dba/44721/error-while-restoring-a-database-from-an-sql-dump
quelle
Befolgen Sie auf einem Windows-Computer die vorherigen Schritte.
Geben Sie jetzt Ihre Datenbank ein.
quelle
Haben Sie versucht, in Notepad ++ (oder einem anderen Editor) zu öffnen und uns in UTF-8 zu konvertieren / zu speichern?
Siehe: notepad ++ Konvertieren einer ansi-codierten Datei in utf-8
Eine andere Möglichkeit besteht darin, Textwrangle zum Öffnen und Speichern der Datei als UTF-8 zu verwenden: http://www.barebones.com/products/textwrangler/
quelle
Extrahieren Sie Ihre Datei mit dem Tar-Archivierungswerkzeug. Sie können es folgendermaßen verwenden:
quelle
Möglicherweise hat Ihre dump.sql am Anfang Ihrer Datei ein Müllzeichen oder am Anfang steht eine Leerzeile.
quelle
Ich hatte diesen Fehler einmal, nachdem ich unter
mysqldump
Windows PowerShell wie folgt ausgeführt wurde:Was ich getan habe, war es zu ändern (Pipe statt Set-Content):
Und das Problem ging weg!
quelle
Wenn Sie nicht genügend Speicherplatz haben oder keine Zeit mit dem Dekomprimieren verschwenden möchten, versuchen Sie diesen Befehl.
Vergessen Sie nicht, compress-sqlfile.gz durch Ihren komprimierten Dateinamen zu ersetzen.
Die Wiederherstellung von .gz funktioniert nicht ohne den oben angegebenen Befehl.
quelle
Sie müssen das Problem dump.sql archivieren. Verwenden Sie Sequel Pro, um die Ecoding Ihrer Datei zu überprüfen. Es sollten Müllzeichen in Ihrer dump.sql sein.
quelle
Ich hatte das gleiche Problem, stellte jedoch fest, dass es sich bei der Speicherauszugsdatei tatsächlich um eine MSSQL Server-Sicherung handelte, nicht um MySQL.
Manchmal spielen ältere Sicherungsdateien uns einen Streich. Überprüfen Sie Ihre Dump-Datei.
Im Terminalfenster:
Das Ergebnis war:
So beenden Sie die Verarbeitung des Befehls cat:
quelle
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
quelle
Die Datei, die Sie importieren möchten, ist eine Zip-Datei. Entpacken Sie die Datei und versuchen Sie erneut zu importieren.
quelle
Unter Linux Ungzip Ihre Datei mit gunzip Bearbeiten Sie Ihre unzip SQL-Datei mit
Entfernen Sie die erste Binärzeile mit esc dd. Gehen Sie mit esc shift zum Ende der Datei. G Entfernen Sie die letzte Binärzeile mit dd. Speichern Sie die Datei esc x: Importieren Sie sie dann erneut in mysql mit:
Ich habe das mit einer 20go SQL-Datei aus einem Jetbackup-Cpanel-MySQL-Backup durchgeführt. Warten Sie geduldig, bis Sie die Arbeit für große Dateien erledigt haben
quelle
Ihre Datei sollte nur die Erweiterung .sql haben (.zip, .gz .rar) usw. wird nicht unterstützt. Beispiel: dump.sql
quelle
Sie können dies verwenden, um Fehler zu beheben:
quelle
Ich weiß, dass die ursprüngliche Posterfrage gelöst wurde, aber ich bin über Google hierher gekommen, und die verschiedenen Antworten haben mich schließlich zu der Erkenntnis geführt, dass mein SQL mit einem anderen Standardzeichensatz als dem zum Importieren ausgegeben wurde. Ich habe den gleichen Fehler wie bei der ursprünglichen Frage erhalten, aber da unser Speicherauszug in einen anderen MySQL-Client geleitet wurde, konnten wir ihn nicht mit einem anderen Tool öffnen und anders speichern.
Für uns stellte sich heraus, dass die Lösung die
--default-character-set=utf8mb4
Option war, sowohl beim Aufrufmysqldump
als auch beim Aufruf zum Importieren über verwendet zu werdenmysql
. Natürlich kann der Wert des Parameters für andere Benutzer mit demselben Problem unterschiedlich sein. Es ist nur wichtig, ihn gleich zu halten, da die Standardeinstellung für Server (oder Tools) ein beliebiger Zeichensatz sein kann.quelle
mysqldump -uUSER -p user_db | gzip > user_db_$(date +"%Y%m%d_%H%M").sql.gz
dann zu importieren versuchen , mitgunzip -c user_db_datetime.sql.gz | mysql -uUSER -p user_db