ich wollte fragen ob es irgendeine Patentlösung gibt, um die Verbindung zu einer MySql Datenbank automatisch wiederherzustellen wenn man eine QSqlQuery ausführen möchte und die Verbindung unterbrochen wurde.
Ich habe nur beschränkt Möglichkeiten, das Timeout serverseitig hochzusetzen (vom Provider aus steht das irgendwo um eine Minute). Ich will nicht zwangsläufig eine stundenlange Verbindung, ich möchte aber keine Fehler bekommen bzw. nicht das Programm neu starten müssen wenn die Verbindung weg ist. Ein Timer-Event dass einmal pro Minute eine Abfrage ausführt möchte ich auch nicht unbedingt machen, wäre am Ende aber vielleicht eine Notlösung. Dann aber im eigenen Thread, da ich nicht will dass mir der Timer irgendwie im Gui Thread umpfuscht.
Am liebsten wärs mir, wenn direkt beim QSqlQuery::exec festgestellt werden könnte, ob die Verbindung weg ist, und diese dann direkt neu aufgebaut wird. Also vielleicht so:
Code: Alles auswählen
if (!query.exec())
maybe_reconnect_and_repeat_query(query);
Richtig nervig wirds dann allerdings, wenn ich so einen Mechanismus auch für die QSqlTableModels implementieren muss. Da müsste ich dann beim auto-Submit bzw. beim select mitbekommen, dass die Verbindung weg ist. Dann die Verbindung neu aufbauen und die Abfrage erneut ausführen.
Qt bringt da meines Wissens noch nichts mit (nicht für MySql, für die anderen iirc schon). Hat da jemand eine gute Idee?
[edit] gelöst, ähnlich wie hier:
http://qtforum.de/forum/viewtopic.php?t ... 51738fd333
qt quellen/qmysqldriver::open() angepasst und manuell ein mysql_options mit MYSQL_OPT_RECONNECT eingefügt. funktioniert tadellos.