TL;DR — Per aumentare la dimensione max_allowed_packet in modo permanente, aggiungi
max_allowed_packet=1Gsotto[mysqld]inmy.cnfe riavvia MySQL. Per una soluzione immediata senza riavvio, eseguiSET GLOBAL max_allowed_packet=1073741824;in un client MySQL. Verifica la modifica conSHOW VARIABLES LIKE 'max_allowed_packet';.
Contents

Quando MySQL riceve una query con un pacchetto di dati più grande del valore max_allowed_packet, genera un errore "Packet too large" e chiude la connessione. Questo è un errore MySQL comune negli ambienti WordPress — si manifesta durante errori MySQL di dimensione del pacchetto durante il push, pacchetto troppo grande durante la clonazione, importazioni di database di grandi dimensioni e migrazioni di siti. Il valore predefinito è impostato basso rispetto a quanto necessitano i grandi siti WordPress, ma aumentarlo è semplice una volta identificato il metodo giusto per il tuo ambiente di Hosting.
Ad esempio, se il ripristino del Backup WP STAGING fallisce a causa di una dimensione del pacchetto troppo piccola, il messaggio di errore mostra la dimensione della query problematica, così puoi regolare max_allowed_packet di conseguenza. Nella versione attuale di WP STAGING, il Plugin regola ed esegue le query del database in modo dinamico in base alla dimensione massima del pacchetto del tuo server, ma il limite MySQL sottostante si applica comunque alle importazioni dirette e agli strumenti di terze parti.
Hai due opzioni per modificare la dimensione max_allowed_packet MySQL: una modifica permanente nel file di configurazione MySQL e una modifica temporanea via SQL — entrambe coperte di seguito.
Cosa controlla max_allowed_packet
La variabile di sistema max_allowed_packet imposta la dimensione massima di un singolo pacchetto di comunicazione tra il client MySQL e il server. Quando una query, una riga di risultato o una definizione di stored routine supera questo limite, MySQL termina la connessione e registra un errore.
Pattern di sintomi comuni:
- "Packet too large" — MySQL rifiuta immediatamente la query.
- "MySQL server has gone away" — la connessione cade durante un’importazione di lunga durata.
- Errori di push o ripristino in WP STAGING quando il sito contiene revisioni di articoli grandi, valori opzione serializzati o metadati immagine memorizzati come post meta.
- Errori durante il ripristino con
mysqldumpo l’importazione tramite phpMyAdmin.
Nella nostra coda di supporto, l’innesco più comune è un push WP STAGING che include grandi librerie di immagini o revisioni di articoli memorizzate come post meta. Abbiamo visto questo bloccare anche aumentare max_allowed_packet prima della migrazione a un nuovo host — intercettare il limite prima di una migrazione evita importazioni fallite a metà trasferimento.
Quale metodo dovrei usare?
| Il tuo ambiente | Metodo migliore |
|---|---|
| VPS o server dedicato con accesso SSH | Modifica my.cnf — permanente |
| Hosting condiviso (senza SSH) | Contatta il tuo provider di Hosting; phpMyAdmin può ispezionare il valore corrente ma non modificarlo in modo permanente |
| AWS RDS per MySQL | Modifica un parameter group DB nella console AWS |
| DigitalOcean Managed MySQL | Imposta tramite la scheda "Configuration" nel pannello di controllo |
| Hai bisogno di una soluzione immediata senza riavvio | Comando SQL SET GLOBAL — temporaneo, si resetta al riavvio |
Se non sei sicuro di quale file di configurazione MySQL stia leggendo, esegui mysql --verbose --help | grep my.cnf in un terminale per vedere l’ordine di ricerca completo.
Come impostare max_allowed_packet in modo permanente
Una modifica permanente sopravvive ai riavvii del server MySQL. Il metodo dipende dal tuo ambiente di Hosting.
VPS o server dedicato: modifica my.cnf
- Apri
my.ini(Windows) omy.cnf(Linux/macOS) nella directory di installazione del server MySQL. Sulla maggior parte dei sistemi Linux il file si trova in/etc/mysql/my.cnfo/etc/my.cnf. Per la configurazione del server MySQL dalla riga di comando, verifica prima il percorso esatto conmysql --verbose --help | grep my.cnf. - Individua la sezione
[mysqld]. La direttiva deve andare sotto[mysqld], non[mysql]o[client]— metterla nella sezione sbagliata è il motivo più comune per cui la correzione sembra funzionare ma non ha effetto. - Trova o aggiungi la riga
max_allowed_packet. Per impostare il valore a 1 GB:
[mysqld]
max_allowed_packet=1G
- Salva il file, poi riavvia MySQL:
sudo systemctl restart mysql
- Verifica il nuovo valore:
SHOW VARIABLES LIKE 'max_allowed_packet';
Hosting condiviso: ispezionare tramite phpMyAdmin
Su Hosting condiviso senza accesso SSH, puoi verificare il valore max_allowed_packet attuale navigando in phpMyAdmin → Variables e cercando max_allowed_packet. Per aumentarlo in modo permanente, contatta il tuo provider di Hosting — questa è un’impostazione a livello server che richiede l’accesso amministrativo al di fuori del pannello di controllo condiviso.
Database gestiti: AWS RDS e DigitalOcean
I servizi MySQL cloud-managed espongono la variabile attraverso i loro pannelli di controllo invece che attraverso un file di configurazione:
- AWS RDS per MySQL — apri l’istanza DB nella console AWS, vai al parameter group associato e imposta
max_allowed_packet. Applica il parameter group aggiornato e riavvia l’istanza affinché la modifica abbia effetto. - DigitalOcean Managed MySQL — vai nella scheda Configuration del cluster del database e aggiorna lì
max_allowed_packet.
Per entrambe le piattaforme, imposta il valore prima di eseguire un’importazione o una migrazione di grandi dimensioni. Vedi aumentare max_allowed_packet prima della migrazione per una checklist preliminare alla migrazione.
Come impostare max_allowed_packet in modo temporaneo
La variabile max_allowed_packet può essere impostata globalmente eseguendo un comando SQL. Questo ha effetto immediato — nessun riavvio richiesto — ma il valore si resetta al riavvio del server MySQL. Segui sempre con la modifica permanente in my.cnf se hai bisogno che la modifica persista.
Tuttavia, se non la modifichi nel file my.ini, il valore si resetterà sempre al riavvio del server, anche se l’hai impostato globalmente.
Per cambiare il max allowed packet per tutti a 1 GB fino al riavvio del server:
SET GLOBAL max_allowed_packet=1073741824;
Verifica immediatamente:
SHOW VARIABLES LIKE 'max_allowed_packet';
Questo metodo è utile per sbloccare errori max_allowed_packet durante il ripristino in corso o per testare il valore corretto prima di applicarlo al file di configurazione.
Cosa fare se la correzione non ha effetto
Se SHOW VARIABLES LIKE 'max_allowed_packet'; restituisce ancora il vecchio valore dopo la tua modifica, segui questa checklist:
- Sezione di configurazione sbagliata. La direttiva deve essere sotto
[mysqld]. Apri il file e conferma l’intestazione della sezione direttamente sopra la rigamax_allowed_packet. - File di configurazione sbagliato. MySQL legge più file in un ordine specifico e l’ultimo valore corrispondente vince. Controlla il percorso di ricerca effettivo:
mysql --verbose --help | grep my.cnf
- MySQL non è stato riavviato. Conferma che il servizio sia stato riavviato correttamente:
sudo systemctl status mysql
- File non salvato o non leggibile. Verifica che il file sia stato salvato e che MySQL abbia i permessi di lettura su di esso.
- Nodi replica. In un ambiente replicato,
SET GLOBALsi applica solo al nodo a cui sei connesso. Ogni replica richiede il proprio aggiornamento del file di configurazione. - Limite lato client. Alcuni client di database impostano
max_allowed_packetal momento della connessione. Se il valore del client è inferiore al valore del server, si applica il limite del client indipendentemente dall’impostazione del server.
Abbiamo visto la correzione fallire silenziosamente quando l’intestazione della sezione [mysqld] mancava in un my.cnf appena creato che conteneva solo voci [mysql] — MySQL analizza il file senza errori ma ignora la direttiva.
Per errori correlati di memory limit del server che appaiono insieme a errori di pacchetto MySQL nei file di log, si applicano le stesse regole di sezione di configurazione. Per altri limiti MySQL e PHP del server, un approccio simile alla modifica del file di configurazione del server risolve il problema.
Articoli correlati
- Come aumentare il limite PHP Max Input Vars in WordPress
- Come aumentare la dimensione massima di upload dei file in WordPress
- Come cambiare il prefisso tabelle WordPress del database MySQL
- 3 modi per cambiare il prefisso delle tabelle del database WordPress
- Risolvere l’estensione PHP MySQL mancante in WordPress
- Tutorial phpMyAdmin per riparare e ottimizzare le tabelle del database
- Errore MySQL – "Row size too large" durante il ripristino di un Backup