Errore MySQL 2006: il server mysql è andato via

Gestisco un server nel mio ufficio per elaborare alcuni file e riportare i risultati su un server MySQL remoto.

L’elaborazione dei file richiede un po ‘di tempo e il processo muore a metà strada con il seguente errore:

2006, MySQL server has gone away 

Ho sentito parlare delle impostazioni di MySQL, wait_timeout , ma devo cambiarlo sul server del mio ufficio o sul server MySQL remoto?

Potrebbe essere più semplice controllare se la connessione e ristabilirla se necessario.

Vedi PHP: mysqli_ping per informazioni su questo.

L’ho riscontrato diverse volte e normalmente ho trovato la risposta come un’impostazione predefinita molto bassa di max_allowed_packet . Sollevarlo in /etc/my.cnf (sotto [mysqld] ) su 8 o 16M di solito lo risolve.

 [mysqld] max_allowed_packet=16M 

Nota: questo può essere impostato sul tuo server mentre è in esecuzione.

Usa set global max_allowed_packet=104857600 . Questo lo imposta su 100 MB.

Ho avuto lo stesso problema, ma la modifica di max_allowed_packet nel file my.ini/my.cnf in [mysqld] fatto il trucco.

aggiungi una linea

max_allowed_packet = 500M

ora restart the MySQL service una volta terminato.

Ho usato il comando seguente nella riga di comando MySQL per ripristinare un database MySQL di dimensioni superiori a 7 GB e funziona.

 set global max_allowed_packet=268435456; 

In MAMP (versione non pro) ho aggiunto

 --max_allowed_packet=268435456 

per ...\MAMP\bin\startMysql.sh

Crediti e maggiori dettagli qui

Errore: 2006 ( CR_SERVER_GONE_ERROR )

Messaggio: il server MySQL è andato via

In genere è ansible riprovare a connettersi e quindi eseguire di nuovo la query per risolvere il problema: provare 3-4 volte prima di abbandonare completamente.

Immagino che tu stia usando PDO. In tal caso, si rileverà l’eccezione PDO, si incrementerà un contatore e si riproverà se il contatore è sotto una soglia.

Se hai una query che causa un timeout puoi impostare questa variabile eseguendo:

 SET @@GLOBAL.wait_timeout=300; SET @@LOCAL.wait_timeout=300; -- OR current session only 

Dove 300 è il numero di secondi che si ritiene il tempo massimo che la query potrebbe richiedere.

Ulteriori informazioni su come gestire i problemi di connessione di Mysql.

EDIT: altre due impostazioni che potresti voler utilizzare sono net_write_timeout e net_read_timeout .

Questo errore si verifica a causa della scadenza di wait_timeout.

Vai al server mysql controlla il suo wait_timeout:

mysql> MOSTRA VARIABILI COME ‘wait_timeout’

mysql> imposta global wait_timeout = 600 # 10 minuti o tempo di attesa massimo necessario

http://sggoyal.blogspot.in/2015/01/2006-mysql-server-has-gone-away.html

Stavo ricevendo lo stesso errore sul mio server Ubuntu DigitalOcean.

Ho provato a cambiare le impostazioni max_allowed_packet e wait_timeout, ma nessuno dei due ha risolto il problema.

Si scopre che il mio server era senza RAM. Ho aggiunto un file di scambio da 1 GB e questo ha risolto il mio problema.

Controlla la tua memoria con free -h per vedere se è ciò che sta causando.

Su Windows, quelli che usano xampp dovrebbero usare questo percorso xampp / mysql / bin / my.ini e cambiare max_allowed_packet (sotto la sezione [mysqld]) alla dimensione scelta. per esempio

 max_allowed_packet=8M 

Di nuovo su php.ini (xampp / php / php.ini) cambia upload_max_filesize la dimensione scelta. per esempio

 upload_max_filesize=8M 

Mi ha dato un mal di testa per un po ‘fino a quando ho scoperto questo. Spero che sia d’aiuto.

Per Vagrant Box, assicurati di assegnare abbastanza spazio alla scatola

 config.vm.provider "virtualbox" do |vb| vb.memory = "4096" end 

Nel mio caso era basso valore della variabile open_files_limit , che bloccava l’accesso di mysqld ai file di dati.

L’ho controllato con:

 mysql> SHOW VARIABLES LIKE 'open%'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | open_files_limit | 1185 | +------------------+-------+ 1 row in set (0.00 sec) 

Dopo aver cambiato la variabile in grande valore, il nostro server era di nuovo vivo:

 [mysqld] open_files_limit = 100000 

Era un problema di RAM per me.

Stavo avendo lo stesso problema anche su un server con 12 core CPU e 32 GB di RAM. Ho studiato di più e ho cercato di liberare RAM. Ecco il comando che ho usato su Ubuntu 14.04 per liberare la RAM:

 sync && echo 3 | sudo tee /proc/sys/vm/drop_caches 

E ha risolto tutto. L’ho impostato su cron per funzionare ogni ora.

 crontab -e 0 * * * * bash /root/ram.sh; 

E, è ansible utilizzare questo comando per verificare la quantità di RAM disponibile:

 free -h 

E otterrai qualcosa del genere:

  total used free shared buffers cached Mem: 31G 12G 18G 59M 1.9G 973M -/+ buffers/cache: 9.9G 21G Swap: 8.0G 368M 7.6G 

Lo scenario improbabile è che tu abbia un firewall tra il client e il server che impone il reset del TCP nella connessione.

Ho avuto questo problema e ho trovato che il nostro firewall F5 aziendale era configurato per terminare sessioni inattive che sono inattive per più di 5 minuti.

Ancora una volta, questo è lo scenario improbabile.

Se si utilizza il WAMPSERVER a 64 bit, cercare più occorrenze di max_allowed_packet perché WAMP utilizza il valore impostato in [wampmysqld64] e non il valore impostato in [mysqldump], che per me era il problema, stavo aggiornando quello errato. Impostalo su qualcosa come max_allowed_packet = 64M.

Speriamo che questo aiuti gli altri utenti di Wampserver.

decommenta la ligne sottostante nel tuo my.ini/my.cnf , questo dividerà il tuo file di grandi dimensioni in una porzione più piccola

 # binary logging format - mixed recommended # binlog_format=mixed 

A

 # binary logging format - mixed recommended binlog_format=mixed 

Ho trovato la soluzione per “# 2006 – Il server MySQL è andato via” questo errore. La soluzione è solo devi controllare due file

  1. config.inc.php
  2. config.sample.inc.php

Il percorso di questi file in Windows è

 C:\wamp64\apps\phpmyadmin4.6.4 

In questi due file il valore di questo:

 $cfg['Servers'][$i]['host']must be 'localhost' . 

Nel mio caso è stato:

 $cfg['Servers'][$i]['host'] = '127.0.0.1'; 

cambiarlo in:

 "$cfg['Servers'][$i]['host']" = 'localhost'; 

Assicurati di entrambi:

  1. config.inc.php
  2. file config.sample.inc.php deve essere ‘localhost’.

E ultimo set:

 $cfg['Servers'][$i]['AllowNoPassword'] = true; 

Quindi riavviare Wampserver.


Per cambiare nome utente e password phpmyadmin

È ansible modificare direttamente il nome utente e la password di phpmyadmin attraverso il file config.inc.php

Queste due linee

 $cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i]['password'] = ''; 

Qui puoi dare nuovo nome utente e password. Dopo le modifiche, salvare il file e riavviare il server WAMP.

Questo generalmente indica problemi di connettività del server MySQL o timeout. Generalmente può essere risolto cambiando wait_timeout e max_allowed_packet in my.cnf o simili.

Vorrei suggerire questi valori:

wait_timeout = 28800

max_allowed_packet = 8M

Ho ricevuto il messaggio di errore 2006 in diversi software client MySQL sul mio desktop di Ubuntu. Si è scoperto che la mia versione del driver JDBC era troppo vecchia.

Questo potrebbe essere un problema delle dimensioni del tuo file .sql.

Se stai usando xampp. Vai al pannello di controllo xampp -> Fai clic su MySql config -> Apri my.ini.

Aumentare la dimensione del pacchetto.

 max_allowed_packet = 2M -> 10M 

Per gli utenti che usano XAMPP, ci sono 2 parametri max_allowed_packet in C: \ xampp \ mysql \ bin \ my.ini.

È sempre una buona idea controllare i log del server Mysql, per il motivo per cui è andato via.

Te lo dirà.

Se sai che stai offline per un po ‘, puoi chiudere la connessione, eseguire l’elaborazione, riconnetterti e scrivere i rapporti.