Aumentare la dimensione max_allowed_packet in MySQL

TL;DR: Per aumentare 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 un push WP STAGING, 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 di un 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 sono trattate 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 migrazioni 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.

Prima di modificare qualsiasi cosa, verifica il valore corrente per conoscere il tuo punto di partenza. Su un server con accesso SSH, esegui SHOW VARIABLES LIKE 'max_allowed_packet'; in un client MySQL; su Hosting condiviso, apri phpMyAdmin, poi Variables, e cerca max_allowed_packet. Imposta il nuovo valore comodamente sopra il pacchetto più grande che prevedi: quando un ripristino o un’importazione fallisce, il messaggio di errore indica la dimensione della query problematica, quindi usa quella cifra come soglia minima.

VPS o server dedicato: modifica my.cnf

1. Apri il file di configurazione MySQL. Apri my.ini (Windows) o my.cnf (Linux o 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. Se non sei sicuro di quale file MySQL legga, 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. Imposta il valore. Trova o aggiungi la riga max_allowed_packet sotto [mysqld]. Per impostare il valore a 1 GB:

[mysqld]
max_allowed_packet=1G

4. Salva il file e riavvia MySQL.

sudo systemctl restart mysql

5. 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, poi Variables, e cercando max_allowed_packet. Per aumentarlo in modo permanente, contatta il tuo provider di Hosting, perché 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 una grande migrazione a un nuovo host affinché l’importazione non fallisca a metà del processo.

Come impostare max_allowed_packet in modo temporaneo

La variabile max_allowed_packet può essere impostata globalmente con un singolo comando SQL. Questo ha effetto immediato, senza 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.

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 un ripristino o un’importazione che sta fallendo in questo momento, 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

3. MySQL non è stato riavviato. Conferma che il servizio sia stato riavviato correttamente:

sudo systemctl status mysql

4. File non salvato o non leggibile. Verifica che il file sia stato salvato e che MySQL abbia i permessi di lettura su di esso.

5. 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.

6. 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.

Gli errori di memory limit del server a volte appaiono insieme a errori di pacchetto MySQL nello stesso file di log. Vedi errori di PHP memory_limit esaurito per quella soluzione, che segue la stessa disciplina della sezione di configurazione. Per il limite max_input_vars di PHP, modificare il file di configurazione del server risolve il problema allo stesso modo.

Articoli correlati

Updated on Agosto 21, 2026

Rene Hermenau

Autore: Rene Hermenau

Informazioni sull'autore: René Hermenau è il fondatore di WP STAGING. Si occupa di backup WordPress, staging, migrazioni, gestione dei database e flussi di deployment sicuri.