Jestem zupełnie nowy w MySQL i uruchamiam go w systemie Windows. Próbuję przywrócić bazę danych z pliku zrzutu w MySQL, ale pojawia się następujący błąd:
$ >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'.
Próbowałem, $ > mysql -u root -p -h localhost -D database --binary-mode -o < dump.sql
ale otrzymałem następujące. ERROR at line 1: Unknown command '\☻'.
Jest to plik zrzutu 500 Mb, a kiedy przeglądam jego zawartość za pomocą gVIM, widzę tylko wyrażenia i dane, które nie są zrozumiałe. Również gdy próbuję skopiować zawartość z pliku, aby opublikować tutaj, wszystko, co mogę skopiować, to: SQLite format 3
Ten rodzaj wydaje się dziwny.
.sql
pliku z dziwnymi znakami i kodowaniem. Druga próba zadziałała dobrze.Odpowiedzi:
Odniesienie do
--binary-mode
(wprowadzone w MySQL 5.6.3) prawdopodobnie rozprasza uwagę.Nie brzmi to tak, jakbyś miał do czynienia z plikiem wyjściowym mysqldump. Wypróbuj
file
narzędzie.Jeśli nie otrzymasz
ASCII text
odpowiedzi, masz do czynienia z czymś, co wcale nie jest plikiem zrzutumysqldump
lub masz do czynienia z czymś, co zostało skompresowane (na przykład za pomocą gzip lub bzip2), które „ d trzeba go zdekompresować przed wpompowaniemmysql
.Jeśli widzisz,
SQLite 3.x database
to na pewno masz odpowiedź ... to surowa baza danych SQLite, a nie plik zrzutu MySQL.Rzeczywiście pierwsze kilka bajtów bazy danych SQLite to:
Zauważ, że 16 oktet tutaj to 0x00, co wyjaśnia
ERROR: ASCII '\0' appeared in the statement...
komunikat w tym przypadku.--binary-mode
Właściwą sugestią jest fałszywy alarm.Użytkownicy systemu Windows: narzędzie „plik” jest narzędziem systemu Unix, ale wersję systemu Windows można znaleźć tutaj .
źródło
file MySQL.sql
powracaUTF-8 Unicode text, with very long lines
. Jakieś pomysły?less -S MySQL.sql
. Co widzisz? Czy to wygląda jak plik zrzutu MySQL? Są one w większości czytelne dla człowieka. (Użyj,q
aby wyjść.)-- MySQL dump 10.13 Distrib 5.7.22, for Linux (x86_64)
. I przejście w dół za pomocą spacji pokazuje typowe instrukcje MySQL. Jeśli jednak będę dalej schodzić, zawiesi się na pewnej linii. Ten sam wiersz, który pojawił się w komunikacie o błędzie. Przyjrzałem się temu dalej i odkryłem, że zrzut MySQL nie został poprawnie rozpakowany za pierwszym razem. Nie jestem pewien, co poszło nie tak, ale kiedy ponownie rozpakuję, działa dobrze. Tutaj dodałem odpowiedź na ten temat dla innych: stackoverflow.com/a/51432853/293280 Dziękuję bardzo za pomoc i szybką odpowiedź. 👍Windows
Utwórz pliki zrzutu za pomocą tego polecenia
Za pomocą:
źródło
Miałem ten błąd jeden raz, po uruchomieniu
mysqldump
w Windows PowerShell w taki sposób:To, co zrobiłem, to zmieniłem na to (potok zamiast Set-Content):
Problem zniknął!
źródło
Ja też w PowerShell
Napotkałem ten problem, gdy korzystałem z programu PowerShell do wywoływania mysqldump i > do przesyłania danych wyjściowych do pliku. Program PowerShell używał niepoprawnego kodowania podczas tworzenia pliku i przy próbie zaimportowania pliku przy użyciu mysql pojawił się ten sam błąd . <Exported-file.sql
Odkryłem, że ustawienie domyślnego kodowania na UTF8 w sesji PowerShell rozwiązało ten problem.
Moja rozdzielczość - Testowany PowerShell 5.1:
Przykład: jak tworzyłem eksport (uproszczony) :
Uwaga: Odkryto, że to nie działa w PowerShell 4.0
Moje środowisko programistyczne działało w wersji 5.1, ale prod ma wersję 4.0, a moja początkowa poprawka nie działa w starszych wersjach programu PowerShell.
Potrzebuję użyć
| Set-Content -Encoding UTF8 $fileName
Zasugerował to już Ifedi
źródło
Czy próbowałeś otworzyć w Notatniku ++ (lub innym edytorze) i przekonwertować / zapisać nas do UTF-8?
Zobacz: /programming/7256049/notepad-converting-ansi-encoded-file-to-utf-8
Inną opcją może być użycie textwrangle do otwarcia i zapisania pliku jako UTF-8: http://www.barebones.com/products/textwrangler/
źródło
Ktoś przysłał mi skompresowany gtar. Nie był nawet zbyt dobrze zaznajomiony z gtar, ale jest to kolejny format kompresji.
Byłem jednak w stanie zdekompresować go tak jak zwykle:
A potem mógłbym wykonać import:
źródło
Rozwiązanie: Wyodrębnij plik kopii zapasowej, a następnie przywróć ten wypakowany zrzut SQL.
Przykład:
Kopia zapasowa została pobrana jako plik dump.sql.gz i wypakuj ją za pomocą cmd gunzip w następujący sposób,
I PRZYWRACANIE wyodrębnił plik dump.sql.
Zobacz: Informacje o trybie binarnym i interaktywnym MySQL.
http://dev.mysql.com/doc/refman/5.7/en/mysql-command-options.html#option_mysql_binary-mode
Działa dla mnie i wszystko gotowe !!
źródło
W moim przypadku plik został uszkodzony. Baza danych została skompresowana z rozszerzeniem,
.bz2
ale tak naprawdę była.tar.bz2
.Dekompresowanie za pomocą
bzip2 -dk
nie powoduje żadnych błędów i generuje plik. Użycie poleceniafile
na wyjściach pliku,bzip2 compressed data, block size = 900k
aby nawet nie wyglądało źle, aby go użyć.Musiałem użyć
tar -xf myfile.bz2
źródło