In generale l'errore:
Errore: 2006 ( CR_SERVER_GONE_ERROR) - Il server MySQL è andato via
significa che il client non è stato in grado di inviare una domanda al server .
mysql importare
Nel tuo caso specifico durante l'importazione del file di database tramite mysql, ciò molto probabilmente significa che alcune delle query nel file SQL sono troppo grandi per essere importate e non possono essere eseguite sul server, quindi il client non riesce al primo errore.
Quindi hai le seguenti possibilità:
Aggiungi force force option ( -f) per mysqlprocedere ed eseguire il resto delle query.
Ciò è utile se il database ha alcune query di grandi dimensioni relative alla cache che non sono comunque rilevanti.
Aumenta max_allowed_packetewait_timeout nella configurazione del tuo server (ad es ~/.my.cnf.).
Scaricare il database utilizzando l' --skip-extended-insertopzione per suddividere le query di grandi dimensioni. Quindi importalo di nuovo.
Prova ad applicare l' --max-allowed-packetopzione per mysql.
Ragioni comuni
In generale questo errore potrebbe significare diverse cose, come:
una query sul server non è corretta o è troppo grande,
Soluzione: aumentare la max_allowed_packetvariabile .
Assicurati che la variabile sia nella [mysqld]sezione, no [mysql].
Non abbiate paura di usare grandi numeri per i test (come 1G).
Non dimenticare di riavviare il server MySQL / MariaDB.
Ricontrolla il valore impostato correttamente:
mysql -sve "SELECT @@max_allowed_packet" # or:
mysql -sve "SHOW VARIABLES LIKE 'max_allowed_packet'"
Hai ottenuto un timeout dalla connessione TCP / IP sul lato client.
Soluzione: aumentare la wait_timeoutvariabile .
Si è tentato di eseguire una query dopo aver chiuso la connessione al server.
Soluzione: è necessario correggere un errore logico nell'applicazione.
La ricerca del nome host non è riuscita (ad es. Problema del server DNS) o il server è stato avviato con l' --skip-networkingopzione.
Un'altra possibilità è che il firewall blocchi la porta MySQL (ad esempio 3306 per impostazione predefinita).
Il thread in esecuzione è stato eliminato, quindi riprovare.
Si è verificato un errore in cui il server è morto durante l'esecuzione della query.
Un client in esecuzione su un host diverso non dispone dei privilegi necessari per connettersi.
E molti altri, quindi scopri di più su: B.5.2.9 Il server MySQL è andato via .
Debug
Ecco alcune idee di debug a livello di esperti:
Controllare i registri, ad es
sudo tail -f $(mysql -Nse "SELECT @@GLOBAL.log_error")
Metti alla prova la tua connessione tramite mysql, telneto le funzioni ping (ad esempio mysql_pingin PHP).
Utilizzare tcpdumpper annusare la comunicazione MySQL (non funzionerà per la connessione socket), ad esempio:
sudo tcpdump -i lo0 -s 1500 -nl -w- port mysql | strings
Su Linux, usa strace. Su BSD / Mac utilizzare dtrace/ dtruss, ad es
sudo dtruss -a -fn mysqld 2>&1
Vedi: Introduzione a DTracing MySQL
Ulteriori informazioni su come eseguire il debug del server o client MySQL su: 26.5 Debug e porting di MySQL .
Per riferimento, controlla il codice sorgente nel sql-common/client.cfile responsabile per generare l' CR_SERVER_GONE_ERRORerrore per il comando client.
MYSQL_TRACE(SEND_COMMAND, mysql, (command, header_length, arg_length, header, arg));
if (net_write_command(net,(uchar) command, header, header_length,
arg, arg_length))
{
set_mysql_error(mysql, CR_SERVER_GONE_ERROR, unknown_sqlstate);
goto end;
}