SQLSTATE [HY000] [2002] Ressource vorübergehend nicht verfügbar - mysql - innodb und pdo

8

Erhalte zahlreiche Ergebnisse in meinen Fehlerprotokollen wie dem unten aufgelisteten. Alle Tabellen in der Datenbank sind innodb und soweit es eine Interaktion mit diesen Tabellen gibt, ist alles pdo mit vorbereiteten Anweisungen.

Wie ich schon sagte, sind alle Fehler fast identisch mit denen, die unten aufgelistet sind, aber für ein paar verschiedene Seiten. Unabhängig von der Seite zeigt die Fehlerzeile IMMER auf den Punkt, an dem ich eine neue Anweisung starte ... zum Beispiel $stmt = $db->prepare("........ Die Anweisungen selbst funktionieren tadellos ohne Fehler, daher bin ich etwas verwirrt, was das verursacht.

Mehrere Fehler wie diese für verschiedene Seiten:

  

[25-Sep-2014 10:19:09 America / Chicago] Fehler beim Verbinden mit der Datenbank:   SQLSTATE [HY000] [2002] Ressource vorübergehend nicht verfügbar [25-Sep-2014   10:19:09 America / Chicago] PHP Schwerwiegender Fehler: Aufruf einer Memberfunktion   prepare () auf ein Nicht-Objekt in /home/test/public_html/add_log.php on   Zeile 28

Beispiel stmt den Fehler zeigt auf - in diesem Fall $stmt = $db->prepare(" Zeile spezifisch. Es zeigt immer auf die Zeile, die eine neue vorbereitete Anweisung startet.

%Vor%

Skript verbinden:

%Vor%

Dinge, die mir in den Sinn gekommen sind:

  • Dieses spezielle Skript läuft oft ... manchmal kann es in einer Sekunde mehrmals aufgerufen werden.

  • Auf dieser Seite verwende ich das gleiche Format für alle meine vorbereiteten Anweisungen ... $ stmt = ... $ result oder $ results = ... Ich schließe den Cursor jedoch nicht aus meiner Recherche heraus wird nicht benötigt, da der Treiber MySQL ist und dies automatisch gemacht wird.

  • Ich habe PDO :: ATTR_PERSISTENT in meinen Verbindungseinstellungen auf "true" gesetzt - würde das irgendeinen Einfluss auf diesen Fehler haben?

Was passiert hier mit all diesen Fehlern? Jeder?

BEARBEITEN - weitere Informationen:

  • Ich habe localhost explizit auf 127.0.0.1 geändert
  • Ich habe persistente Verbindungen ausgeschaltet / false

Seitdem der obige Fehler aufgetreten ist, hat sich der Fehler in SQLSTATE[HY000] [2002] Connection timed out geändert. Ist das tatsächlich ein Problem mit der Person / Comp Verbindung zu 'mir' oder tatsächlich ein Problem mit meinem Server / db?

EDIT 2:

Ist es möglich, dass meine Verwendung von $_SERVER['DOCUMENT_ROOT'] ein Problem verursacht? Da diese Datei so oft "getroffen" wird, benötigt sie das Verbindungsskript ebenso oft in der Zeile darunter. Ich benötige mein Verbindungsskript wie folgt auf jeder Seite, die es benötigt:

  

erfordert $ _SERVER ['DOCUMENT_ROOT']. '/ custom / functions / connect.php';

    
user756659 27.09.2014, 04:19
quelle

5 Antworten

7

Ich werde @MrGomez Topic zu diesem Thema aufzeigen meistens kurz und doch beschreibend auf den von Ihnen angegebenen Fehler. Dies ist kein PDO-bezogenes Problem, sondern MySQL-spezifisch.

Gründe dafür, dass "Ressource vorübergehend nicht verfügbar" ist

  1. Nicht genügend verfügbarer MySQL-Speicher
  2. Keine MySQL-Dateideskriptoren unter dem aktuellen Benutzer
  3. In ein Livelock oder einen Deadlock laufen
  4. Keine Ressourcen auf einem Upstream-Proxy verfügbar
  5. Keine PIDs mehr verfügbar, um
  6. zu verzweigen

Allerdings sollten Ihre Protokolle mehr Informationen enthalten, damit Sie wissen, was passiert. Wie zum Beispiel, ob eine Datei gesperrt ist.

    
revo 02.10.2014 20:55
quelle
3

Es zeigt nicht wirklich auf diese Zeile.

Der Fehler in Ihrem Protokoll

  

[25-Sep-2014 10:19:09 America / Chicago] Verbindung zur Datenbank konnte nicht hergestellt werden: SQLSTATE [HY000] [2002] Ressource vorübergehend nicht verfügbar

sieht so aus, als würde es hier von der catch-Anweisung geschrieben:

%Vor%

Hinweis: $db wird nicht in der catch-Anweisung festgelegt.

Ihr Skript wird dann weiter ausgeführt, bis es die Zeile $db->prepare erreicht. Da $db null ist, gibt es einen weiteren Fehler aus, diesmal mit der Zeile der Datei.

Darüber hinaus - finden Sie in der Antwort von revo, warum Sie möglicherweise den Fehler "Ressource vorübergehend nicht verfügbar" erhalten.

    
Chris 02.10.2014 21:03
quelle
2

Erhöhe deine max_connections in my.cnf :

%Vor%

Überprüfen Sie die für mysql verfügbaren Dateideskriptoren:

%Vor%

Wenn der Standardwert 1024 ist, ändern Sie ihn auf 65535 oder mehr

%Vor%

mysqld neu starten

    
Jevgenijs Vaikulis 06.10.2014 20:21
quelle
0

Nur ein Gedanke - können Sie die DB-Verbindung im Speicher ablegen, so dass Sie nicht ständig neue erstellen müssen? Auch in Bezug auf Ihre DIR magische Konstante ist großartig (ich habe es erst heute vollständig verstanden). Hoffe das hilft.

    
Ukuser32 08.10.2014 13:54
quelle
0

Bedeutet normalerweise, dass Sie TCP / IP angeben müssen:

%Vor%

In Ihrem Fall:

%Vor%

vielleicht so etwas:

%Vor%     
CoolLife 09.10.2014 01:09
quelle

Tags und Links