MySQL server has gone away

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
kromonos
User
Beiträge: 34
Registriert: Freitag 9. Januar 2009, 02:37
Wohnort: Trier
Kontaktdaten:

Wie kann ich folgenden fehler verhindern??
_mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away')
xmpp:kromonos@user-helfen-usern.de
HomePage/IT-Forum: http://www.user-helfen-usern.de
kromonos
User
Beiträge: 34
Registriert: Freitag 9. Januar 2009, 02:37
Wohnort: Trier
Kontaktdaten:

Gut .. das erklärt schon einiges .. aber nicht, wie ich es in python so einbauen kann, dass der TimeOut zum Server durch z.B. einen ping "übergangen" wird.
xmpp:kromonos@user-helfen-usern.de
HomePage/IT-Forum: http://www.user-helfen-usern.de
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

Das Problem existiert, seitdem Mysql offiziell Transaktionen unterstützt und die Mysql-Leute mit dem früher eingestellten automatischen reconnect die Konsistenz nicht mehr sicherstellen konnten (u.a. wegen des Rollbacks).

Ich geh mal davon aus, daß Du das Standard-binding unter Python für Mysql nutzt. Da gibts auf der Entwicklerseite einen längeren Thread im Entwicklerforum/Bugtracker dazu, wie man mit dem Problem umgehen sollte. Das läßt sich leider nicht so pauschal beantworten, da es von Einsatzszenario abhängt.

Btw macht das mysqldb-binding unter debian/ubuntu hier das "alte" reconnect, wovon der Entwickler unbedingt abrät, da im Transaktionsfalle Inkonsistenzen vorprogrammiert sind.
kromonos
User
Beiträge: 34
Registriert: Freitag 9. Januar 2009, 02:37
Wohnort: Trier
Kontaktdaten:

hmm .. das ist natürlich blöd .. -.-

EDIT: Danke für die antwort :)
xmpp:kromonos@user-helfen-usern.de
HomePage/IT-Forum: http://www.user-helfen-usern.de
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

Um das Problem zu umgehen, warum pingst Du den Server nicht vor den zu tätigenden Aktionen an? Damit kannst Du doch auf den Fehler reagieren. Bist Du dennoch inmitten einer Transaktion (eher unwahrscheinlich), so weißt Du, daß die DB ein rollback fährt und Du die Transaktion neu aufbauen mußt. Und ohne Transaktionseinsatz tuts das alte reconnect auch (daher wohl die Entscheidung der Debianleute, das weiter zu nutzen).
Antworten