Mám problém s BLOB poliami v databáze MySQL - pri nahrávaní súborov väčších ako približne 1 MB sa mi zobrazí chyba Pakety väčšie ako max_allowed_packet nie sú povolené.
Tu je to, čo som skúšal:
V MySQL Query Browser som spustil show variables like 'max_allowed_packet'
, ktorý mi dal 1048576.
Potom som vykonal dotaz set global max_allowed_packet=33554432
, po ktorom nasledovalo show variables like 'max_allowed_packet'
- dalo mi to 33554432 podľa očakávania.
Ale keď reštartujem MySQL server, zázračne sa vráti na 1048576. Čo tu robím zle?
Bonusová otázka, je možné komprimovať pole BLOB?
Zmeňte súbor my.ini
alebo ~/.my.cnf
tak, že do neho vložíte jeden riadok v časti [mysqld]
alebo [client]
:
max_allowed_packet=500M
potom reštartujte službu MySQL a je to hotové.
Ďalšie informácie nájdete v dokumentácii.
Premennú max_allowed_packet možno nastaviť globálne spustením dotazu.
Ak ju však nezmeníte v súbore my.ini
(ako navrhol dragon112), hodnota sa pri reštarte servera vynuluje, aj keď ju nastavíte globálne.
Zmena maximálneho povoleného paketu pre všetkých na 1 GB až do reštartu servera:
SET GLOBAL max_allowed_packet=1073741824;
Táto chyba vznikla, pretože vaše údaje obsahujú väčšiu hodnotu, ako je nastavená.
Stačí zapísať max_allowed_packed=500M
alebo môžete vypočítať 500*1024k a použiť to namiesto 500M, ak chcete.
Teraz len reštartujte MySQL.