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