Mam problem z polami BLOB w mojej bazie danych MySQL - podczas wysyłania plików większych niż około 1MB dostaję błąd Pakiety większe niż max_allowed_packet nie są dozwolone.
Oto co próbowałem zrobić:
W MySQL Query Browser uruchomiłem show variables like 'max_allowed_packet'
, co dało mi 1048576.
Następnie wykonuję zapytanie set global max_allowed_packet=33554432
, po którym następuje show variables like 'max_allowed_packet'
- daje mi 33554432 zgodnie z oczekiwaniami.
Ale kiedy ponownie uruchamiam serwer MySQL, magicznie wraca on do wartości 1048576. Co robię nie tak?
Pytanie bonusowe, czy możliwe jest skompresowanie pola BLOB?
Zmień w pliku my.ini
lub ~/.my.cnf
poprzez włączenie pojedynczej linii pod sekcją [mysqld]
lub [client]
w swoim pliku:
max_allowed_packet=500M
następnie zrestartuj usługę MySQL i gotowe.
Zobacz dokumentację aby uzyskać więcej informacji.
Zmienna max_allowed_packet może być ustawiona globalnie poprzez uruchomienie zapytania.
Jednakże, jeśli nie zmienisz jej w pliku my.ini
(jak zasugerował dragon112), wartość zostanie zresetowana po ponownym uruchomieniu serwera, nawet jeśli ustawisz ją globalnie.
Aby zmienić maksymalny dozwolony pakiet dla wszystkich na 1GB do czasu restartu serwera:
SET GLOBAL max_allowed_packet=1073741824;
Błąd ten jest spowodowany tym, że Twoje dane zawierają większą wartość niż ustawiona.
Po prostu zapisz max_allowed_packed=500M
.
lub możesz obliczyć, że 500*1024k i użyć tego zamiast 500M jeśli chcesz.
Teraz po prostu zrestartuj MySQL.