sql >> Database >  >> RDS >> Mysql

PHP Mysql PDO:Algemene fout:2006 MySQL-server is verdwenen

Enkele andere veelvoorkomende redenen waarom de MySQL-server is verdwenen, zijn:

  • Jij (of de db-beheerder) heeft de actieve thread gedood met een KILL-instructie of een mysqladmin kill-commando.

  • U heeft geprobeerd een query uit te voeren nadat u de verbinding met de server had verbroken. Dit duidt op een logische fout in de toepassing die moet worden gecorrigeerd.

  • Een clienttoepassing die op een andere host draait, heeft niet de benodigde rechten om vanaf die host verbinding te maken met de MySQL-server.

  • U hebt een time-out van de TCP/IP-verbinding aan de clientzijde. Dit kan gebeuren als je de volgende commando's hebt gebruikt:mysql_options(..., MYSQL_OPT_READ_TIMEOUT,...) of mysql_options(..., MYSQL_OPT_WRITE_TIMEOUT,...). In dit geval kan het verhogen van de time-out het probleem helpen oplossen.

  • U bent een time-out tegengekomen aan de serverzijde en de automatische herverbinding in de client is uitgeschakeld (de herverbindingsvlag in de MYSQL-structuur is gelijk aan 0).

  • U gebruikt een Windows-client en de server had de verbinding verbroken (waarschijnlijk omdat wait_timeout is verlopen) voordat de opdracht werd gegeven.

  • Het probleem met Windows is dat MySQL in sommige gevallen geen foutmelding krijgt van het besturingssysteem bij het schrijven naar de TCP/IP-verbinding naar de server, maar in plaats daarvan een foutmelding krijgt wanneer het antwoord van de verbinding wordt gelezen.

  • De oplossing hiervoor is om ofwel een mysql_ping() op de verbinding te doen als er een lange tijd is verstreken sinds de laatste query (dit is wat Connector/ODBC doet) of wait_timeout op de mysqld-server zo hoog in te stellen dat het in de praktijk nooit tijden is uit.

  • U kunt deze fouten ook krijgen als u een query naar de server stuurt die onjuist of te groot is. Als mysqld een pakket ontvangt dat te groot of niet in orde is, gaat het ervan uit dat er iets mis is gegaan met de client en wordt de verbinding verbroken. Als u grote query's nodig hebt (bijvoorbeeld als u met grote BLOB-kolommen werkt), kunt u de querylimiet verhogen door de variabele max_allowed_packet van de server in te stellen, die een standaardwaarde van 4 MB heeft. Mogelijk moet u ook de maximale pakketgrootte aan de clientzijde verhogen. Meer informatie over het instellen van de pakketgrootte wordt gegeven in Paragraaf B.5.2.10, “Pakket te groot”.

  • Een INSERT- of REPLACE-instructie die een groot aantal rijen invoegt, kan ook dit soort fouten veroorzaken. Elk van deze instructies stuurt een enkel verzoek naar de server, ongeacht het aantal in te voegen rijen; dus u kunt de fout vaak voorkomen door het aantal rijen dat per INSERT of REPLACE wordt verzonden te verminderen.

  • U krijgt ook een verbroken verbinding als u een pakket van 16 MB of groter verzendt als uw client ouder is dan 4.0.8 en uw server 4.0.8 en hoger is, of andersom.

  • Het is ook mogelijk om deze fout te zien als het opzoeken van de hostnaam mislukt (bijvoorbeeld als de DNS-server waarop uw server of netwerk vertrouwt uitvalt). Dit komt omdat MySQL afhankelijk is van het hostsysteem voor naamomzetting, maar niet weet of het werkt. Vanuit het oogpunt van MySQL is het probleem niet te onderscheiden van andere netwerktime-outs.

  • Mogelijk ziet u ook dat de MySQL-server is verdwenen als MySQL is gestart met de optie --skip-networking.

  • Een ander netwerkprobleem dat deze fout kan veroorzaken, doet zich voor als de MySQL-poort (standaard 3306) wordt geblokkeerd door uw firewall, waardoor verbindingen met de MySQL-server worden voorkomen.

  • U kunt deze fout ook tegenkomen bij toepassingen die onderliggende processen afsplitsen, die allemaal dezelfde verbinding met de MySQL-server proberen te gebruiken. Dit kan worden voorkomen door voor elk onderliggend proces een aparte verbinding te gebruiken.

  • U bent een bug tegengekomen waarbij de server het begaf tijdens het uitvoeren van de query.

Check deze link:Weg gegaan




  1. Dynamische SQL SELECT-instructie met PHP op basis van gebruikersopties

  2. Wat zijn de regels voor het gebruik van interne parameters in SSRS

  3. CROSS JOIN vs INNER JOIN in SQL

  4. Hoe REGEXP_SUBSTR() werkt in MariaDB