Errore generale del database: il server MySQL 2006 è scomparso


24

Di recente ho iniziato a ricevere un errore ogni volta che provo ad aggiungere un contenuto, indipendentemente dal tipo. Questo è l'errore visualizzato nel browser:

Eccezione aggiuntiva non rilevata generata durante la gestione dell'eccezione.

PDOException originale: SQLSTATE [HY000]: errore generale: il server MySQL 2006 è andato via: SELEZIONA COUNT (cid) DA {comment} DOVE status =: status; Array ([: status] => 0) in comment_count_unpublished () (riga 313 di /Applications/MAMP/htdocs/modules/comment/comment.module).

addizionale

PDOException: SQLSTATE [HY000]: errore generale: il server MySQL 2006 è andato via: INSERISCI {watchdog} (uid, tipo, messaggio, variabili, gravità, collegamento, posizione, referer, nome host, timestamp) VALUES (: db_insert_placeholder_0,: db_insert_placeholder_1 ,: db_insert_placeholder_2,: db_insert_placeholder_3,: db_insert_placeholder_4,: db_insert_placeholder_5,: db_insert_placeholder_6,: db_insert_placeholder_7,: db_insert_placeholder_8,: db_insert_place9) Array ([: db_insert_placeholder_0] => 1 [: db_insert_placeholder_1] => php [: db_insert_placeholder_2] =>% type:! Message in% function (line% line of% file). [: Db_insert_placeholder_3] => a: 6: { s: 5: "% type"; s: 12: "PDOException"; s: 8: "! message"; s: 154: "SQLSTATE [HY000]: errore generale: 2006 il server MySQL è andato via: SELEZIONA COUNT (cid) DA {comment} DOVE status =: status; Array ([: status] = & gt; 0) "; s: 9:"% function "; s: 27:" comment_count_unpublished () "; s: 5:"% file "; s: 56:" / Applicazioni / MAMP /htdocs/modules/comment/comment.module";s:5:"%line";i:313;s:14:"severity_level";i:3;} [: db_insert_placeholder_4] => 3 [: db_insert_placeholder_5] = > [: db_insert_placeholder_6] =>http: // localhost: 8888 /? q = nodo% 2Fadd% 2Farcade-project & amp ; [: db_insert_placeholder_7] => http: // localhost: 8888 / [: db_insert_placeholder_8] => 127.0.0.1 [: db_insert_placeholder_9] => 1338336955) in dblog_watchdog () (riga 154 di / Applicazioni / MAMP / htdocs / modules / dlog / dblog.module).

Ricevo anche il seguente errore nel mio file di errore php:

Errore irreversibile PHP: eccezione non rilevata "PDOException" con messaggio "SQLSTATE [HY000]: errore generale: il server MySQL 2006 è andato via" in /Applications/MAMP/htdocs/includes/database/database.inc:2136

Stack trace:
0 /Applications/MAMP/htdocs/includes/database/database.inc(2136): PDOStatement-> execute (Array)
1 /Applications/MAMP/htdocs/includes/database/database.inc(664): DatabaseStatementBase- > execute (Array, Array)
2 /Applications/MAMP/htdocs/includes/database/database.inc(2315): DatabaseConnection-> query ('SELECT expire, ...', Array, Array)
3 / Applicazioni / MAMP / htdocs / Includes / lock.inc (167): db_query ('SELECT expire, ...', Array)
4 /Applications/MAMP/htdocs/includes/lock.inc(146): lock_may_be_available ('theme_registry: ...' )
5 /Applications/MAMP/htdocs/includes/theme.inc(447): lock_acquire ('theme_registry: ...')
6 /Applications/MAMP/htdocs/includes/bootstrap.inc(427): ThemeRegistry-> set ( Array)
7 [funzione interna]: DrupalCacheArray -> __ destruct ()
8 {main} inserito in /Applications/MAMP/htdocs/includes/database/database.inc on line 2136

Ho qualche problema a decifrare questi messaggi di errore. Qualcuno potrebbe aiutarmi a capire cosa sta succedendo qui?

Risposte:


31

9 volte su 10 questo errore è causato da un'impostazione insufficientemente grande max_allowed_packetnel file my.cnf del server MySQL.

Il valore predefinito standard per MAMP nella mia esperienza è 1M, che di solito non è sufficiente per Drupal (soprattutto considerando la dimensione di alcune stringhe di cache che genera).

Prova ad aumentare gradualmente questa impostazione per vedere se l'errore scompare. Sono sicuro che una rapida ricerca su Google ti dirà come farlo in MAMP.


Fortunatamente il mio caso non è rientrato nella categoria 1 volte su 10. I tuoi consigli hanno funzionato come un fascino! Grazie!
Mike2012,

Di fronte allo stesso errore in Windows. Ho configurato lo stack apache, mysql e php localmente ... per favore guida
Prerit Mohan

E in caso di hosting condiviso, cosa posso fare?
Mohammed Amine Bourkadi,

Contatta il tuo host, chiedi loro di apportare la modifica. Se non possono / non vogliono, devi decidere se questo host è quello giusto per te @mohammedaminebourkadi.
Clive

6

Questo errore MySQL / MariaDB:

Errore: 2006 ( CR_SERVER_GONE_ERROR) - Il server MySQL è andato via

significa sostanzialmente che il client non è riuscito a inviare una domanda al server .

Ciò può accadere per errore temporaneo, query SQL troppo grande o non valida, configurazione errata del server o limitazione del provider di hosting.

In generale questo errore potrebbe essere il risultato di diverse cose, come ad esempio:

  • una query sul server è errata o troppo grande,

    Soluzione: aumentare la max_allowed_packetvariabile .

    Nota: assicurarsi che la variabile sia nella [mysqld]sezione, non [mysql].

    Nota: non dimenticare di riavviare il server MySQL / MariaDB.

  • Hai ottenuto un timeout dalla connessione TCP / IP sul lato client.

    Soluzione: aumentare la wait_timeoutvariabile .

  • Si è tentato di eseguire una query dopo la chiusura della 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 .

Per ulteriori dettagli, controlla i tuoi log di MySQL o di sistema (ad es /var/log/messages.).

Per eseguire il debug del server o client MySQL, controllare: 26.5 Debug e porting di MySQL .


Nel caso in cui si stia tentando di importare il database dal file utilizzando il comando drusho mysql, è possibile:

  • Aggiungi un'opzione force ( -f) per mysqlprocedere ed eseguire il resto delle query.

    Ciò è utile se il database ha alcune query di grandi dimensioni relative alla cache che sono di grandi dimensioni, ma comunque non rilevanti.

    Utilizzando drush, prova:cat foo.sql | $(drush sqlconnect) -f

  • Prova ad applicare l' --max-allowed-packetopzione per mysqlcon valori più piccoli.

  • Aumenta max_allowed_packetewait_timeout nella configurazione del tuo server (ad es ~/.my.cnf.).

  • Eseguire nuovamente il dump del database originale utilizzando l' --skip-extended-insertopzione per suddividere le query di grandi dimensioni. Quindi importare di nuovo il file.


Vedi anche: ERRORE 2006 (HY000): il server MySQL è andato via


3

La risposta che @Clive dà normalmente è il caso, ma può esserci una causa aggiuntiva, specialmente con i moduli di aggiunta dei nodi.

I moduli di aggiunta nodo in genere sono grandi e l'elaborazione di questi può utilizzare molta memoria (soprattutto se durante il salvataggio è presente un'elaborazione delle immagini, come con i moduli di ritaglio). Se la memoria del server si esaurisce, è possibile che il processo mysqld venga interrotto, con lo stesso messaggio "scomparso".

L'indizio è quello di cercare nei registri del server. Su una macchina CentOS, potresti vedere la seguente voce in / var / log / messages

1 gennaio 00:00:00 kernel servername: Memoria esaurita: Kill process XXXX (mysqld) score XXX o sacrifica figlio
1 gen 00:00:00 kernel servername: Killed process XXXX, UID XX, (mysqld) total-vm: XXXkB , anon-rss: XXXkB, file-rss: XXkB

La soluzione qui è aggiungere più RAM o aggiungere / aumentare lo scambio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.