Python mysqldb Fehler beim Schließen der Verbindung

8

Ich habe ein Problem beim Schließen einer Verbindung wie folgt:

%Vor%

Dies ergibt:

%Vor%

Python's MySQLDB Bibliotheksinfo ist wie folgt:

%Vor%

Was ist seltsam ist das:

  • Ich habe auf dem Server überprüft und query.log existiert und wird von anderen Prozessen beschrieben.
  • Dieser Code funktioniert über mehrere Iterationen, und bei einem bestimmten Element schlägt er fehl.
  • Die genaue Abfrage läuft über SQLyog und liefert vier Ergebnisse.

Der Server error.log sagt "Abgebrochene Verbindung ... (Fehler beim Lesen von Commination-Paketen)"

Während der Traceback den Fehler anzeigt, der mit der Verbindungserzeugung verbunden ist, tritt er erst auf, wenn die Verbindung geschlossen wird (oder die Funktion endet, was ich denke, dass sie geschlossen wird). Ich habe versucht, zusätzliche Ausgabe oder Pausen zwischen öffnen und schließen. Jedes Mal, wenn die Ausnahme beim Schließen auftritt. Was könnte diesen Fehler beim Schließen der Verbindung verursachen?

    
James Bradbury 13.12.2013, 11:52
quelle

1 Antwort

3

Hier ist, was ich bis jetzt gefunden habe.

Es scheint, dass ein Fehler beim Öffnen einer Verbindung ausgelöst wird, bei MySQLdb.Connect(...) , 2. Zeile im eingefügten Code, nicht beim Schließen einer Verbindung.

Vollständige Rückverfolgung:

  • ...
  • execute_sql_query [op]
  • MySQLdb Connect [op]
  • MySQLdb super (...) [op]
  • _mysql.c ConnectionObject_Initialize [niedrigeres pyhon-Modul, geschrieben in C]
  • libmysql mysql_real_connect oder mysql_options [wahrscheinlich die frühere]
  • schlägt fehl, Ausnahme wird gesetzt

Lassen Sie uns die Ausnahme dekodieren

%Vor%
  • "3" ältere mysql mysys_err.h EE_WRITE 3
  • "query.log", ist diese lokale oder Remote-Protokolldatei? scheint ein Windows-Pfad zu sein.
  • "Errorcode: 9" unter Annahme von Windows (oben), das ist ERROR_INVALID_BLOCK "Die Adresse des Speichersteuerblocks ist ungültig." Ganz kryptisch, aber es würde gehen und prüfen, ob diese Datei existiert, ob sie beschreibbar ist und ob sie logrotate oder ähnlichem unterliegt. Überprüfen Sie den Speicherplatz auf der Festplatte, machen Sie auch eine Überprüfung der Festplatte.

Es scheint ein clientseitiger Fehler zu sein. Überprüfen Sie Ihren clientseitigen Abschnitt my.cnf , [client] .

Quellcode für die angegebene MySQLdb-Version

    
Dima Tisnek 18.12.2013, 10:39
quelle