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.
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.)
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.
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
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.)
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
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
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
#
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!
Usa una variabile max_allowed_packet
che emette un comando come
mysql --max_allowed_packet=32M
-u root -p database < dump.sql
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 .
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
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.
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.