it-swarm-eu.dev

MySQL Chyba 1153 - Máte větší paket než 'max_allowed_packet' bajtů

Dovážím výpis MySQL a získám následující chybu.

$ mysql foo < foo.sql 
ERROR 1153 (08S01) at line 96: Got a packet bigger than 'max_allowed_packet' bytes

Zdá se, že v databázi jsou přílohy, které jsou velmi velké.


Toto je na mém lokálním počítači, Mac s MySQL 5 nainstalovaným z balíčku MySQL.

Kde mohu změnit max_allowed_packet, aby bylo možné importovat výpis? 

Mám ještě něco jiného? 

Právě spuštění mysql --max_allowed_packet=32M … mělo za následek stejnou chybu.

386
kch

Pravděpodobně budete muset změnit pro klienta (používáte k importu) A démona mysqld, který je spuštěn a přijímá import.

Pro klienta jej můžete zadat na příkazovém řádku:

mysql --max_allowed_packet=100M -u root -p database < dump.sql

Také změňte soubor my.cnf nebo my.ini v části mysqld a nastavte:

max_allowed_packet=100M

nebo můžete tyto příkazy spustit v konzole MySQL připojené ke stejnému serveru:

set global net_buffer_length=1000000; 
set global max_allowed_packet=1000000000;

(Pro velikost paketu použijte velmi velkou hodnotu.)

517
Michael Pryor

Jak řekl michaelpryor, musíte ho změnit pro oba klient a server démona mysqld.

Jeho řešení pro klientský příkazový řádek je dobré, ale ini soubory ne vždy dělají trik, záleží na konfiguraci. 

Otevřete terminál, zadejte mysql, abyste získali mysql Prompt, a vydejte tyto příkazy:

set global net_buffer_length=1000000; 
set global max_allowed_packet=1000000000; 

Udržujte mysql Prompt otevřený a spusťte provádění příkazového řádku SQL na druhém terminálu.

118
Joshua Fox

To lze změnit v souboru my.ini (ve Windows, který se nachází v Programech MySQL MySQL Server) v sekci server, například:

[mysqld]

max_allowed_packet = 10M
36
GHad

Re my.cnf na Mac OS X při použití MySQL z distribuce balíků mysql.com dmg

Ve výchozím nastavení není soubor my.cnf nikde k nalezení.

Musíte zkopírovat jednu z /usr/local/mysql/support-files/my*.cnf do /etc/my.cnf a restartovat mysqld. (Co můžete udělat v podokně MySQL preference, pokud jste jej nainstalovali.)

15
kch

V souboru etc/my.cnf zkuste změnit max_allowed _packet a net_buffer_length na

max_allowed_packet=100000000
net_buffer_length=1000000 

pokud to nefunguje, zkuste změnit

max_allowed_packet=100M
net_buffer_length=100K 
12
Amirtha Rajan

Oprava má zvýšit max_allowed_packet MySQL démona. To lze provést spuštěným démonem tak, že se přihlásíte jako Super a spouštíte následující příkazy. 

# mysql -u admin -p

mysql> set global net_buffer_length=1000000;
Query OK, 0 rows affected (0.00 sec)

mysql> set global max_allowed_packet=1000000000;
Query OK, 0 rows affected (0.00 sec)

Potom importujte výpis:

gunzip < dump.sql.gz | mysql -u admin -p database
10
Primoz Rome

Na CENTOS 6 /etc/my.cnf v části [mysqld] je správná syntaxe:

[mysqld]
# added to avoid err "Got a packet bigger than 'max_allowed_packet' bytes"
#
net_buffer_length=1000000 
max_allowed_packet=1000000000
#
5
Mike

Mírně nesouvisí s vaším problémem, takže tady je jeden pro Google.

Pokud jste si mysqldump SQL, může to být, že váš SQL je rozbitý. 

Právě jsem dostal tuto chybu omylem s neuzavřeným řetězcovým literálem v mém kódu. Dojde k náhlým prstům.

To je fantastická chybová zpráva, jak se dostat do utajeného řetězce, díky za to MySQL!

4
jplindstrom

Použijte proměnnou max_allowed_packet vydávající příkaz jako

mysql --max_allowed_packet=32M -u root -p database < dump.sql

4

Někdy nastavení typu:

max_allowed_packet = 16M

v my.ini nefunguje. 

Zkuste zjistit my.ini následujícím způsobem:

set-variable = max_allowed_packet = 32M

nebo

set-variable = max_allowed_packet = 1000000000

Poté restartujte server:

/etc/init.d/mysql restart

Je to bezpečnostní riziko mít max_allowed_packet na vyšší hodnotu, protože útočník může Push větší velikosti pakety a pád systému. 

Takže, Optimální hodnota max_allowed_packet má být vyladěna a testována.

Je lepší změnit, když je to nutné (pomocí set global max_allowed_packet = xxx) , Než aby to bylo součástí my.ini nebo my.conf .

1
Shiva

Chyba:

ERROR 1153 (08S01) na řádku 6772: Dostal paket větší než 'Max_allowed_packet' bytes Operace se nezdařila s výstupním kódem 1

QUERY:

SET GLOBAL max_allowed_packet=1073741824;
SHOW VARIABLES LIKE 'max_allowed_packet'; 

Maximální hodnota:

Default Value (MySQL >= 8.0.3)  67108864
Default Value (MySQL <= 8.0.2)  4194304
Minimum Value   1024
Maximum Value   1073741824
0
TinhNQ

Nastavte max_allowed_packet na stejné (nebo více) než to, co to bylo, když jste to s mysqldump. Pokud to neuděláte, udělejte znovu výpis s menší hodnotou.

To znamená, že za předpokladu, že jste to vyhodili s mysqldump. Pokud jste použili jiný nástroj, jste sami.

0
MarkR

Pracuji ve sdíleném hostitelském prostředí a hostil jsem webové stránky založené na Drupalu. Soubor my.ini ani soubor my.conf také nemohu upravovat.

Takže jsem odstranil všechny tabulky, které souvisely s Cache, a proto jsem mohl tento problém vyřešit. Stále hledám perfektní řešení/způsob, jak tento problém zvládnout.

Edit - Vymazání tabulek mi vytvořilo problémy, coz Drupal očekával, že tyto tabulky budou existovat. Tak jsem vyprázdnil obsah těchto tabulek, které problém vyřešily.

0