„Serwer MySQL zniknął” podczas próby zaimportowania dużego pliku zrzutu


11

Próbuję zaimportować plik zrzutu MySQL.

Plik został utworzony na serwerze Linux, próbuję zaimportować na Windows

Zalogowałem się do wiersza poleceń i uruchomiłem:

SOURCE c:/dump.sql

Ale wydaje się, że spowodowało to pewne problemy z zestawem znaków (szczególnie w przypadku inteligentnych cytatów i innych niestandardowych znaków interpunkcyjnych).

Zasugerowano mi, że prowadzę:

mysql -u username -d dbase < c:\dump.sql

Gdy próbuję tego, pojawia się błąd

ERROR 2006 (HY000) at line 149351: MySQL server has gone away

Trochę googlingu sugerowało, że miało to związek z przełącznikiem max_allowed_packet, ale próbowałem tego i nie zadziałało. Czy ktoś ma pojęcie, co to może być?

Jeśli ktoś ma sugestię dotyczącą problemu z zestawem znaków, to też byłoby pomocne.


Jakakolwiek informacja zwrotna? [15 znaków do komentarza]
Mihai Limbăşan

Odpowiedzi:


23

Moim pierwszym instynktem po przeczytaniu komunikatu o błędzie w tytule pytania było zasugerowanie zwiększenia pakietu max_allowed_packet. Wspomniałeś, że próbowałeś „to zmienić” i to nie zadziałało. Czy możesz potwierdzić, że poprawnie zmodyfikowałeś plik konfiguracyjny serwera? Twoje sformułowanie sprawia, że ​​brzmi to tak, jakbyś próbował użyć go jako przełącznika wiersza polecenia w wierszu polecenia klienta mysql.exe, co nie spowodowałoby zmiany zachowania serwera.

Krótko mówiąc, powinieneś spróbować zlokalizować i edytować plik my.cnf, z którego obecnie korzysta serwer. W [mysqld]sekcji zmień ustawienia max_allowed_packet na coś podobnego

[mysqld]
max_allowed_packet=32M

Nie zapomnij zrestartować serwera po zmianie konfiguracji.

Jako przykładu użyłem 32M (absurdalnie dużej wartości). Ponieważ twoje zapytanie wydaje się być cudowne, powinieneś wypróbować tę wartość (a może nawet 64 MB, jeśli masz wystarczającą ilość pamięci RAM), aby sprawdzić, czy to działa.

Inną opcją jest pozostawienie serwera bez zmian i zmiana zachowania klienta używanego do generowania zrzutu SQL. Powiedz, aby ograniczył rozmiar pojedynczych zapytań do mniej niż 1 MB - to też powinno wystarczyć.

Aby uzyskać więcej informacji, patrz B.1.2.10. Pakiet za duży w podręczniku MySQL.


1
Tak, właśnie próbowałem zmienić wiersz poleceń. Powodem, dla którego myślałem, że to zadziałało, było to, że dało maksymalny dozwolony pakiet za mały błąd, gdy ustawiłem go na coś mniejszego. Spróbuję twojej sugestii w poniedziałek. Dzięki
Jeremy French,

Nie ma za co - jestem prawie pewien, że to zadziała. Niestety, podobnie jak w przypadku wielu (w porządku, większości) innych programów napisanych w ciągu ostatnich 50 lat, komunikaty o błędach MySQL mają tendencję do zasysania i wprowadzania w błąd, jeśli nie znasz jeszcze sposobu działania umysłu programisty :).
Mihai Limbăşan

Miło to słyszeć - baw się dobrze.
Mihai Limbăşan

Bardzo, bardzo niesamowite. Miałem ten sam problem, przybyłem tutaj, aby zadać pytanie i bam! rozwiązany. @ Mihai - cokolwiek dostaniesz; to nie wystarczy :)
Steven Evers,

To rozwiązanie pomogło nam, gdy otrzymaliśmy ten błąd po przeniesieniu MySQL z localhost na zdalny serwer. Dziękuję Ci bardzo!
Lea Cohen,

1

W MySQL 5.7.24 było to spowodowane starą konfiguracją z MySQL 5.6

sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION. 

Opcja poniżej jest obowiązkowa, jeśli wersja SQL jest taka sama 5.7.5 lub nowsza.

sql_mode=TRADITIONAL

Istnieją również dwa parametry pakietu max_allowed_packet w /etc/my.cnf, drugi dotyczy mysqldump. Proszę wziąć pod uwagę to samo.

max_allowed_packet = <1G>

Moja instalacja jest na CentOS7.


0

Czy jesteś w stanie uzyskać dostęp do instancji MySQL na serwerze Windows z Linux-a?

Jeśli tak, czy możesz uruchomić polecenie w polu Linux, używając przełącznika -h, aby połączyć się z serwerem w oknie Windows?

mysql -u username -d dbase -h <windows host> < dump.sql

Może to rozwiązać problemy z zestawem znaków , ponieważ do importowania używasz klienta Linux na oryginalnym pudełku. (tylko przypuszczenie)


0

Co mówi dziennik MySQL?

Czasami ten błąd jest zgłaszany klientowi, jeśli na serwerze występuje błąd, którego nie można naprawić. Może to wskazywać na uszkodzenie dysku tabel bazy danych.


-1

Czy twoje konto ma hasło? Być może musisz dodać przełącznik -p:

mysql -u username -p -d dbase < c:\dump.sql

Och - prawdopodobnie nie, ponieważ wydaje się, że nie udało się wejść do importu.
Brent
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.