Aumentare la dimensione max_allowed_packet in MySQL

TL;DR — Per aumentare la dimensione max_allowed_packet in modo permanente, aggiungi max_allowed_packet=1G sotto [mysqld] in my.cnf e riavvia MySQL. Per una soluzione immediata senza riavvio, esegui SET GLOBAL max_allowed_packet=1073741824; in un client MySQL. Verifica la modifica con SHOW VARIABLES LIKE 'max_allowed_packet';.

Visual representation: Increase max_allowed_packet Size in MySQL. Image created by Dali.

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 mysqldump o 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

  1. Apri my.ini (Windows) o my.cnf (Linux/macOS) nella directory di installazione del server MySQL. Sulla maggior parte dei sistemi Linux il file si trova in /etc/mysql/my.cnf o /etc/my.cnf. Per la configurazione del server MySQL dalla riga di comando, verifica prima il percorso esatto con mysql --verbose --help | grep my.cnf.
  2. 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.
  3. Trova o aggiungi la riga max_allowed_packet. Per impostare il valore a 1 GB:
[mysqld]
max_allowed_packet=1G
  1. Salva il file, poi riavvia MySQL:
sudo systemctl restart mysql
  1. 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:

  1. Sezione di configurazione sbagliata. La direttiva deve essere sotto [mysqld]. Apri il file e conferma l’intestazione della sezione direttamente sopra la riga max_allowed_packet.
  2. 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
  1. MySQL non è stato riavviato. Conferma che il servizio sia stato riavviato correttamente:
sudo systemctl status mysql
  1. File non salvato o non leggibile. Verifica che il file sia stato salvato e che MySQL abbia i permessi di lettura su di esso.
  2. Nodi replica. In un ambiente replicato, SET GLOBAL si applica solo al nodo a cui sei connesso. Ogni replica richiede il proprio aggiornamento del file di configurazione.
  3. Limite lato client. Alcuni client di database impostano max_allowed_packet al 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

Updated on Maggio 23, 2026

Rene Hermenau

Autore: Rene Hermenau

About the author: René Hermenau is the founder of WP STAGING. He works on WordPress backups, staging, migrations, database handling, and safe deployment workflows.