✦ Oplossingen · Database (MySQL/MariaDB)

MySQL server has gone away (fout 2006)

'MySQL server has gone away' betekent dat de verbinding met de database onderweg verbroken is: een timeout, een te groot pakket of een herstart van de server. Zo vind je welke.

Waarom gebeurt dit?

De applicatie had een verbinding, maar die is er niet meer als de volgende query komt. MySQL en MariaDB sluiten verbindingen die langer dan wait_timeout niets doen. Daarnaast verbreekt de server de verbinding als een query of rij groter is dan max_allowed_packet, of als de server zelf herstart of crasht.

Lange scripts (imports, cronjobs, workers) die één verbinding de hele tijd openhouden, zijn de typische kandidaten.

Zo los je het op, stap voor stap

Menunamen kunnen per versie of toestel iets anders heten. Loop de stappen op volgorde af en stop zodra het werkt.

  1. Kijk wanneer het gebeurt

    Na een lange pauze in het script wijst op wait_timeout. Bij een grote import of grote tekst/afbeelding in de database wijst op max_allowed_packet. Plots en voor iedereen tegelijk wijst op een herstart.

  2. Controleer de instellingen

    Bekijk de timeout, de pakketgrootte en hoe lang de server al draait.

    SHOW VARIABLES LIKE 'wait_timeout';
    SHOW VARIABLES LIKE 'max_allowed_packet';
    SHOW GLOBAL STATUS LIKE 'Uptime';  -- laag = recent herstart
  3. Maak opnieuw verbinding in lange scripts

    Open de verbinding pas als je hem nodig hebt, of maak opnieuw verbinding na een fout, in plaats van één verbinding uren open te houden.

  4. Verhoog max_allowed_packet bij grote data

    Zie Packet too big voor de juiste instelling op server én client.

  5. Controleer het log van de databaseserver

    Werd de server herstart, dan staat de reden in zijn log, bijvoorbeeld geheugengebrek waardoor het besturingssysteem het proces afbrak.

    sudo journalctl -u mariadb --since today
    sudo dmesg | grep -i -E 'killed process|out of memory'

Lukt het niet? Wij helpen

Kom je er met deze stappen niet uit, of wil je het liever niet zelf doen? We kijken online mee of komen langs. Hulp op afstand kost €20 per uur; komen we langs, dan is de prijs op aanvraag. Je weet vooraf waar je aan toe bent.

Aanvraag

Hulp aanvragen

Schrijf kort wat er misgaat en wat je al hebt geprobeerd. Kies of we bellen, online meekijken of langskomen.

Veelgestelde vragen

Vragen over dit probleem

Moet ik wait_timeout heel hoog zetten?

Liever niet. Dan blijven slapende verbindingen lang bezet. Maak in lange scripts opnieuw verbinding.

Het gebeurt alleen bij het importeren van een back-up.

Waarschijnlijk is een INSERT groter dan max_allowed_packet. Verhoog die op server en client tijdens de import.

Wat is fout 2013 'Lost connection during query'?

Een verwante fout: de verbinding viel weg tijdens een query, vaak door een timeout van een lange query of een herstart.