Server has gone away-foutmelding

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen

MySQL server has gone away is een foutmelding die aangeeft dat MySQL de verbinding heeft gesloten. De foutmelding wordt echter niet door MySQL gegenereerd, maar door een andere laag in de stack, bv. Drupal. Er zijn veel mogelijke oorzaken, waaronder:

  • Server time-out
  • MySQL is gecrashed, of het betreffende process kreeg het kill-signaal gedurende een query
  • Je probeert een query uit te voeren terwijl de sever is gestopt
  • Je probeert een query uit te voeren op een remote server zonder de bijbehorende privileges
  • Client-sided TCP/IP time-out
  • Time-out zonder automatic reconnection
  • Query is te groot, bv. import met te lange queries, of tabellen met te veel kolommen, of met te veel kolommen met veel data (bv. BLOB's)
  • Query is out-of-order.

Diagnose & oplossing

Foutmelding

Foutmelding. mysqladmin version gaf aan dat MySQL actief was. Uitzetten van de genoemde Drupal-modules (drupal dis {naam}) hielp niet. Tijd om logs te bekijken

MySQL error-log

Het MySQL error-log had nergens last van.

PHP-log

Ah, nu gaat het ergens over:

[30-Jan-2016 18:03:57 Europe/Berlin] PHP Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 2006 MySQL server has gone away' in /var/webserver/example.com/includes/database/database.inc:2171
#0 /var/webserver/example.com/includes/database/database.inc(2171): PDOStatement->execute(Array)
#1 /var/webserver/example.com/includes/database/database.inc(683): DatabaseStatementBase->execute(Array, Array)
#2 /var/webserver/example.com/includes/database/database.inc(2350): DatabaseConnection->query('SELECT expire, ...', Array, Array)
#3 /var/webserver/example.com/includes/lock.inc(167): db_query('SELECT expire, ...', Array)
#4 /var/webserver/example.com/includes/lock.inc(146): lock_may_be_available('schema:runtime:...')
#5 /var/webserver/example.com/includes/bootstrap.inc(433): lock_acquire('schema:runtime:...')
#6 /var/webserver/example.com/inc in /var/webserver/example.com/includes/database/database.inc on line 2171

Zie ook

Bronnen