2012-01-11 14 views
30

Moja aplikacja pobiera wiadomości e-mail przez IMAP i zapisuje je w bazie danych MySQL. Wcześniej obsługiwałem mail o rozmiarze do 10 MB, a więc kolumna "mediumtext" do przechowywania treści wiadomości była wystarczająca. Teraz muszę obsługiwać wiadomości do 30 MB. Więc zmieniłem typ danych dla kolumny na "largetext". Wczoraj przechowywano pocztę o rozmiarze 25 MB. Potem, za każdym razem, gdy wykonuję polecenie mysqldump, generuje błąd:Błąd mysqldump: Dostałem pakiet większy niż max_allowed_packet '

 
mysqldump: Error 2020: Got packet bigger than 'max_allowed_packet' bytes when dumping table `ib_mailbox_backup` at row: 3369 

Wiersz 3369 zawiera 25 MB wiadomości.

W konfiguracji MySQL zwiększyłem "max_allowed_packet" z 64M do 512M i nadal nie działa z tym samym błędem. Wykonywanie komendy mysqldump na tym samym komputerze, na którym działa serwer MySQL. Jak rozwiązać ten problem?

+1

"Wiersz 3369 zawiera 25 MB wiadomości." Jak dowiedziałeś się o wielkości rzędu 3369? – Gopu

Odpowiedz

77
  1. Możesz dodać --max_allowed_packet=512M do swojej komendy mysqldump.
  2. Albo dodać max_allowed_packet=512M do [mysqldump] części swojej my.cnf (dzięki @Varun)

Uwaga: to nie będzie działać, jeśli nie jest w sekcji [mysqldump] ...

+0

Zadziałało. Czy istnieje sposób na umieszczenie tego w pliku konfiguracyjnym MySQL? – Varun

+0

To nie zadziała, ponieważ jest to opcja mysqldump, ale możesz utworzyć alias, jeśli jesteś w systemie rodziny Unix. –

+5

Utworzono sekcję [mysqldump] i dodano max_allowed_packet = 200M do mojego pliku conf i to działa. – Varun

0

Miałem podobny błąd i zakończyłoby się niepowodzeniem z rozmiarem pakietu 512M w wierszu 0. To był innodbowy stół, który najwyraźniej był uszkodzony (mysqlcheck pokazał OK). Skończyło się na ponownym utworzeniu tabeli, a następnie działało dobrze z małym pakietem o rozmiarze zaledwie 128M.

+1

Czy możesz wyjaśnić, o co chodziło w konkretnym problemie - czy był to problem z konfiguracją? – Hiphop03199

1

Niektóre z moich skryptów przestały działać po aktualizacji do Debiana 9 & MariaDB.

MariaDB na Debianie wprowadza nowy plik konfiguracyjny specjalnie dla ustawień mysqldump (/etc/mysql/conf.d/mysqldump.cnf). Jeśli wcześniej ustawiłeś max_allowed_packet <>16M w swoim standardowym /etc/mysql/my.cnf, nowy plik konfiguracyjny zastąpi to ustawienie. Dlatego sprawdź ten nowy plik konfiguracyjny i usuń wpis lub dostosuj go do swoich potrzeb.

Nie jestem pewien, czy zmiana została wprowadzona przez zamianę z MySQL na MariaDB, czy też Debian dokonał zmiany w plikach konfiguracyjnych w V9.

Powiązane problemy