Da pochi giorni ho cambiato notebook e un pezzo alla volta sto migrando tutto sul nuovo sistema.
Tra le tante cose da portare avevo anche i database dei progetti dei quali ho fatto sviluppo in locale.

Ho deciso di esportarli tutti con un’unico dump e fin qui tutto bene (circa 1gb di dati):
mysqldump -u root -p --all-databases > alldb.sql

Trasferisco da un macchina all’altra e quando provo ad importarli ricevo un bellissimo: mysql has gone away.

mysql-has-gone-away

Ricordo che in passato avevo avuto un problema simile che avevo risolto modificando il timeout.
Breve ricerca su google e aggiungo queste 3 righe nel file di configurazione impostando i valori ben oltre i valori di default.


wait_timeout = 128800
connect_timeout = 120
interactive_timeout = 128800

Il risultato non cambia: mysql has gone away.
Aumento ancora ma nulla…

Prendo in considerazione di esportare i database uno alla volta ma sono più di 50 e non ne ho voglia…

Ricontrollo l’errore e vedo che si ferma sempre alla stessa riga.
Apro il dump e vado a vedere: si tratta di una INSERT multipla molto (molto) lunga.

Scorro le altre variabili presenti nel file di configurazione ed ecco davanti a me la causa del problema:
max_allowed_packet = 1M

Questa variabile globale imposta la dimensione massima dei pacchetti e nel mio caso era troppo piccola per quella query estramamente grossa.
La porto da 1 a 5M, riavvio il servizio e lancio l’importazione che questa volta arriva al fondo senza problemi.

La prossima votla spero di ricordami di aver scritto qui la soluzione…

Illustrazione di Elena Triolo

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.