it-swarm.it

Errore MySQL 1153 - Ho ottenuto un pacchetto più grande di byte "max_allowed_packet"

Sto importando un dump MySQL e ottenendo il seguente errore.

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

Apparentemente ci sono allegati nel database, il che rende molto grandi gli inserti.


Questo è sul mio computer locale, un Mac con MySQL 5 installato dal pacchetto MySQL.

Dove cambio max_allowed_packet per poter importare il dump? 

C'è qualcos'altro che dovrei impostare? 

L'esecuzione di mysql --max_allowed_packet=32M … ha comportato lo stesso errore.

386
kch

Probabilmente dovrai cambiarlo sia per il client (sei in esecuzione per eseguire l'importazione) che per il demone mysqld in esecuzione e accettando l'importazione.

Per il client, è possibile specificarlo sulla riga di comando:

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

Inoltre, cambia il file my.cnf o my.ini nella sezione mysqld e imposta:

max_allowed_packet=100M

oppure potresti eseguire questi comandi in una console MySQL connessa allo stesso server:

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

(Usa un valore molto grande per la dimensione del pacchetto.)

517
Michael Pryor

Come ha detto michaelpryor, devi cambiarlo per entrambi il client e il server mysqld daemon.

La sua soluzione per la riga di comando del client è buona, ma i file ini non sempre fanno il trucco, a seconda della configurazione. 

Quindi, apri un terminale, digita mysql per ottenere un prompt mysql e invia questi comandi:

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

Tenere aperto il prompt mysql ed eseguire l'esecuzione SQL della riga di comando su un secondo terminale.

118
Joshua Fox

Questo può essere modificato nel file my.ini (su Windows, che si trova in\Programmi\MySQL\MySQL Server) sotto la sezione server, ad esempio:

[mysqld]

max_allowed_packet = 10M
36
GHad

Re my.cnf su Mac OS X quando si usa MySQL dalla distribuzione del pacchetto dmg mysql.com

Di default, my.cnf non si trova da nessuna parte.

Devi copiare uno dei /usr/local/mysql/support-files/my*.cnf in /etc/my.cnf e riavviare mysqld. (Che puoi fare nel pannello delle preferenze di MySQL se lo hai installato.)

15
kch

In etc/my.cnf prova a cambiare il max_allowed _packet e net_buffer_length a

max_allowed_packet=100000000
net_buffer_length=1000000 

se questo non funziona, prova a cambiarlo

max_allowed_packet=100M
net_buffer_length=100K 
12
Amirtha Rajan

La soluzione è aumentare il max_allowed_packet del daemon MySQL. Puoi eseguire questa operazione su un demone in esecuzione effettuando l'accesso come Super e eseguendo i seguenti comandi. 

# 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)

Quindi per importare il tuo dump:

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

Su CENTOS 6 /etc/my.cnf, nella sezione [mysqld] la sintassi corretta è:

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

Leggermente non correlato al tuo problema, quindi eccone uno per Google.

Se non hai mysqldump SQL, potrebbe essere che il tuo SQL è rotto. 

Ho appena ricevuto questo errore accidentalmente avendo un letterale stringa non chiusa nel mio codice. Accadono dita sciatte.

Questo è un fantastico messaggio di errore per ottenere una stringa in fuga, grazie per quel MySQL!

4
jplindstrom

Usa una variabile max_allowed_packet che emette un comando come

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

4

A volte l'impostazione del tipo:

max_allowed_packet = 16M

in my.ini non funziona. 

Prova a determinare il my.ini come segue:

set-variable = max_allowed_packet = 32M

o

set-variable = max_allowed_packet = 1000000000

Quindi riavvia il server:

/etc/init.d/mysql restart

È un rischio per la sicurezza avere max_allowed_packet a un valore più alto, in quanto un utente malintenzionato può inviare pacchetti di dimensioni maggiori e arrestare il sistema in modo anomalo. 

Quindi, il valore ottimale di max_allowed_packet deve essere ottimizzato e testato.

È meglio cambiare quando richiesto (usando set global max_allowed_packet = xxx) Piuttosto che averlo come parte di my.ini o my.conf .

1
Shiva

Errore:

ERRORE 1153 (08S01) alla riga 6772: ha un pacchetto più grande di 'byte max_allowed_packet' Operazione fallita con exitcode 1

QUERY:

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

Valore massimo:

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

Imposta max_allowed_packet allo stesso (o più) di quello che era quando lo hai scaricato con mysqldump. Se non puoi farlo, fai di nuovo il dump con un valore inferiore.

Cioè, supponendo che tu l'abbia scaricato con mysqldump. Se hai usato qualche altro strumento, sei da solo.

0
MarkR

Sto lavorando in un ambiente di hosting condiviso e ho ospitato un sito web basato su Drupal. Non riesco a modificare il file my.ini o il file my.conf.

Così, ho cancellato tutte le tabelle che erano legate a Cache e quindi ho potuto risolvere questo problema. Sto ancora cercando una soluzione/modo perfetto per gestire questo problema.

Modifica - Eliminare le tabelle ha creato problemi per me, coz Drupal si aspettava che queste tabelle dovessero essere esistenti. Quindi ho svuotato il contenuto di queste tabelle che hanno risolto il problema.

0