Importuję zrzut MySQL i pojawia się następujący błąd.
$ mysql foo < foo.sql
ERROR 1153 (08S01) at line 96: Got a packet bigger than 'max_allowed_packet' bytes
Najwyraźniej w bazie danych znajdują się załączniki, co sprawia, że bardzo duże wstawki.
To jest na mojej lokalnej maszynie, Macu z MySQL 5 zainstalowanym z pakietu MySQL.
Gdzie mam się zmienić? max_allowed_packet
aby móc zaimportować zrzut?
Czy jest jeszcze coś, co powinnam ustawić?
Samo uruchomienie mysql --max_allowed_packet=32M …
spowodowało ten sam błąd.
Odpowiedzi:
Prawdopodobnie musisz go zmienić zarówno dla klienta (działasz, aby wykonać import) ORAZ mysqld demona, który jest uruchomiony i akceptuje import.
W przypadku klienta możesz to określić w wierszu polecenia:
Również zmienić my.cnf lub my.ini pliku w sekcji mysqld i zestawu:
lub możesz uruchomić te polecenia w konsoli MySQL podłączonej do tego samego serwera:
(Użyj bardzo dużej wartości dla rozmiaru pakietu.)
źródło
max_allowed_packet
100 MB to zły pomysł ?Jak powiedział michaelpryor, musisz to zmienić zarówno dla klienta, jak i demona serwera mysqld.
Jego rozwiązanie dla wiersza poleceń klienta jest dobre, ale pliki ini nie zawsze działają, w zależności od konfiguracji.
Więc otwórz terminal, wpisz mysql, aby uzyskać monit mysql, i wydaj następujące polecenia:
Nie zamykaj monitu mysql i uruchom wykonywanie wiersza polecenia SQL na drugim terminalu.
źródło
Można to zmienić w
my.ini
pliku (w systemie Windows, znajdującym się w \ Program Files \ MySQL \ MySQL Server) w sekcji serwera, na przykład:źródło
Re my.cnf na Mac OS X podczas korzystania z MySQL z dystrybucji pakietu dmg mysql.com
Domyślnie nigdzie nie można znaleźć my.cnf.
Trzeba skopiować jeden
/usr/local/mysql/support-files/my*.cnf
do/etc/my.cnf
i restartmysqld
. (Co możesz zrobić w panelu preferencji MySQL, jeśli go zainstalowałeś).źródło
W etc / my.cnf spróbuj zmienić max_allowed _packet i net_buffer_length na
jeśli to nie działa, spróbuj zmienić na
źródło
Rozwiązaniem jest zwiększenie maksymalnego pakietu demona MySQL. Możesz to zrobić działającemu demonowi, logując się jako Super i uruchamiając następujące polecenia.
Następnie, aby zaimportować zrzut:
źródło
Na CENTOS 6 /etc/my.cnf, w sekcji [mysqld] poprawna składnia to:
źródło
Użyj
max_allowed_packet
zmiennej wydającej polecenie takie jakmysql --max_allowed_packet=32M -u root -p database < dump.sql
źródło
Nieco niezwiązany z twoim problemem, więc oto jeden dla Google.
Jeśli nie wykonałeś mysqldump SQL, przyczyną może być uszkodzenie SQL.
Właśnie dostałem ten błąd, przypadkowo mając niezamknięty literał ciągu w moim kodzie. Zdarzają się niechlujne palce.
To fantastyczny komunikat o błędzie dla niekontrolowanego ciągu, dzięki za MySQL!
źródło
max_allowed_packet
błąd. Jeśli to pomoże tym w przyszłości, WSTAWiałem za pomocą API panddf.to_sql(...)
Czasami ustawienie typu:
w my.ini nie działa.
Spróbuj określić plik my.ini w następujący sposób:
lub
Następnie uruchom ponownie serwer:
źródło
Jest to ryzyko bezpieczeństwa
max_allowed_packet
, ponieważ atakujący może przepychać większe pakiety i powodować awarię systemu.Tak więc optymalna wartość
max_allowed_packet
do dostrojenia i przetestowania.Lepiej jest zmieniać, gdy jest to wymagane (za pomocą
set global max_allowed_packet = xxx
), niż mieć to jako część my.ini lub my.conf .źródło
Pracuję we współdzielonym środowisku hostingowym i prowadziłem witrynę internetową opartą na Drupal. Nie mogę również edytować
my.ini
pliku lubmy.conf
pliku.Tak więc usunąłem wszystkie tabele, które były powiązane,
Cache
i dlatego mogłem rozwiązać ten problem. Nadal szukam idealnego rozwiązania / sposobu rozwiązania tego problemu.Edycja - usunięcie tabel stworzyło mi problemy, ponieważ Drupal spodziewał się, że te tabele powinny istnieć. Opróżniłem więc zawartość tych tabel, które rozwiązały problem.
źródło
Błąd:
PYTANIE:
Maksymalna wartość:
źródło
Ustaw max_allowed_packet na taki sam (lub większy) niż ten, który był po zrzuceniu go za pomocą mysqldump. Jeśli nie możesz tego zrobić, ponownie wykonaj zrzut o mniejszej wartości.
To znaczy, zakładając, że zrzuciłeś go za pomocą mysqldump. Jeśli użyłeś innego narzędzia, jesteś sam.
źródło