De oorzaken van een "MySQL server has gone away" melding

Hoewel MySQL een zeer stabiele en snelle database is, kunnen er hier en daar toch foutjes naar voren komen die niet nader te verklaren zijn door de ingebouwde debugger.
 
Bij syntaxerrors en niet voorkomende namen van databases/tabellen/velden weet je wel wat je te doen staat. De query controleren en zo nodig herstellen of het tabel aanpassen.
 
Maar bij een "MySQL server has gone away" melding wordt er in principe niks aangegeven behalve dat de database niet meer bereikbaar is voor een bepaalde tijd. In de meeste gevallen kun je de database herstarten en draait het weer. Maar is de oorzaak van de "MySQL server has gone away" melding hiermee opgelost? Nee, meestal niet.
Dat geeft veel ergernissen en frustraties met zich mee omdat er niet wordt aangeven wat de oorzaak zal kunnen zijn. Op het internet zijn tal van mogelijkheden die de oorzaak kunnen zijn en een eventuele oplossing hiervoor. Van het vergroten van buffer_size, oprekken van timeouts en aanpassen van de hostnaam.
 
Een van de oorzaken waar nauwelijks aandacht aan wordt besteed is het gebruik van de verschillende database engines in een database. Bij migraties naar nieuwere versies of een nieuwe server kan het voorkomen dat er een andere standaard engine is ingesteld dan wat er op de vorige opstelling was ingesteld. Denk aan MySAM vs innoDB.
 
Na een migratie van een database kan het voorkomen dat er weer nieuwe tabellen worden aangemaakt, maar wel met een andere engine dan de bestaande tabellen. Dit geeft onvermijdelijk een keer een "MySQL server has gone away" melding en leidt ook nog eens tot verlies van data en de structuur van het nieuwe tabel. Na zo'n melding bent je te laat en is de data van het nieuwe tabel verloren en rest er niks anders dan een backup terug te zetten.
 
Mocht je zo'n gemengde database hebben die nog wel te bereiken is. Zorgt er dan zo snel mogelijk voor dat je deze database exporteert en de database verwijderd. In het sql-bestand de engines allemaal gelijk zet, bijvoorbeeld op innoDB (ENGINE=InnoDB). Je maakt weer een nieuwe database aan en importeert weer het zojuist aangepaste sql-bestand.
Argeos Authentics
Basilica 11
6661 TT Elst (Gld)
t. 0481 - 840 527
m. 06 - 2042 8400