hi,
habe folgendes Problem mit qsqlquery::exec()
Wenn aus unerwarteter Weise das Netzwerk ausfällt (Kabel durchtrennt, Router down etc.) blockiert die exec() Funktion meine Applikation.
Habe bereits versucht, das Problem mit dem Flag "MAYSQL_OPT_RECONNECT=1" in den Optionen zu lösen, hat leider aber nichts gebracht.
Gibt es hier Lösungsansätze? Bzw. kann man irgendwie in die exec() Funktion ein Timeout einpflegen?
Lg
reinki
QSqlQuery exec
-
reinki0013
- Beiträge: 174
- Registriert: 11. November 2008 09:37
- Wohnort: AUT
Re: QSqlQuery exec
also hat das problem wirklich noch keiner gehabt?
könnte mir vorstellen dass dieses problem doch schon wer gehabt hätte...
könnte mir vorstellen dass dieses problem doch schon wer gehabt hätte...
Re: QSqlQuery exec
Wie lange läuft Deine QSqlQuery.exec()-Methode normalerweise? 0,5 Sek., 20 Sek. oder 2 Minuten?
Denn beim exec() wird auf dem SQL-Server die Ergebnismenge für Dein Statement vorbereitet, die Du dann zeilenweise mit next() abholst. Und wenn ein Fehler auftritt, dann meldet Dir das exec() oder next(). Ich arbeite schon länger mit SQL-DBs, aber ein Blockieren durch die exec()-Methode konnte ich noch nicht feststellen, außer die Statements brauchten sehr lange, was man aber in einem normalen SQL-Tool überprüfen kann.
Denn beim exec() wird auf dem SQL-Server die Ergebnismenge für Dein Statement vorbereitet, die Du dann zeilenweise mit next() abholst. Und wenn ein Fehler auftritt, dann meldet Dir das exec() oder next(). Ich arbeite schon länger mit SQL-DBs, aber ein Blockieren durch die exec()-Methode konnte ich noch nicht feststellen, außer die Statements brauchten sehr lange, was man aber in einem normalen SQL-Tool überprüfen kann.
-
reinki0013
- Beiträge: 174
- Registriert: 11. November 2008 09:37
- Wohnort: AUT
Re: QSqlQuery exec
hallo,
also wie lange mein exec() läuft kann ich nicht immer genau sagen, aber normalerweise max. 60sek.
Also meinst du, dass ich mit einem ext. Tool überprüfen sollte ob das exec() blockiert?
Meine Anwendung läuft unter Linux/Debian und wie geschrieben, bei Netzwerkausfällen während dem exec() blockiert das exec() die komplette Anwendung bis zum Neustart...
also wie lange mein exec() läuft kann ich nicht immer genau sagen, aber normalerweise max. 60sek.
Also meinst du, dass ich mit einem ext. Tool überprüfen sollte ob das exec() blockiert?
Meine Anwendung läuft unter Linux/Debian und wie geschrieben, bei Netzwerkausfällen während dem exec() blockiert das exec() die komplette Anwendung bis zum Neustart...
Re: QSqlQuery exec
Hallo!
Die Dauer der exec()-Methode bzw. das Vorbereiten der Ergebnismenge auf dem SQL-Server war für mich interessant, um zu wissen wie groß der Zeitraum ist, wo ein Netzwerkfehler auftreten kann während exec() läuft. Wenn es im Schnitt maximal eine halbe Sekunde wäre, dann ist die Wahrscheinlichkeit kleiner das Dein Programm blockiert.
Mit einem externen Programm wie der MySQL-Workbench hatte ich gedacht zu überprüfen, wie lange Dein SQL-Statement ohne Qt und Deine Applikation läuft bis das Ergebnis übermittelt wird.
Nur leider habe ich auch keine Idee, warum die Methode exec() nicht mehr returned und ein false zurückgibt. Vielleicht wäre nochmal ein Post in Qt-Projekt-Forum interessant.
Die Dauer der exec()-Methode bzw. das Vorbereiten der Ergebnismenge auf dem SQL-Server war für mich interessant, um zu wissen wie groß der Zeitraum ist, wo ein Netzwerkfehler auftreten kann während exec() läuft. Wenn es im Schnitt maximal eine halbe Sekunde wäre, dann ist die Wahrscheinlichkeit kleiner das Dein Programm blockiert.
Mit einem externen Programm wie der MySQL-Workbench hatte ich gedacht zu überprüfen, wie lange Dein SQL-Statement ohne Qt und Deine Applikation läuft bis das Ergebnis übermittelt wird.
Nur leider habe ich auch keine Idee, warum die Methode exec() nicht mehr returned und ein false zurückgibt. Vielleicht wäre nochmal ein Post in Qt-Projekt-Forum interessant.