[Qt-interest] QtSql connection timeout error
Jason H
scorp1us at yahoo.com
Fri Sep 18 01:30:35 CEST 2009
Well firewalls might drop the connection too. You should have some kind of last ping check and only ping if its past some interval which would be less than the router timeout (usually 75s, or mysql's).
I've seem implementations that just issue a dummy sql select (select now() ) request to keep the routers happy.
----- Original Message ----
From: Mikhail Veygman <mveygman at gmail.com>
To: "tfjellstrom at shaw.ca" <tfjellstrom at shaw.ca>
Cc: "qt-interest at trolltech.com" <qt-interest at trolltech.com>
Sent: Thursday, September 17, 2009 6:26:41 PM
Subject: Re: [Qt-interest] QtSql connection timeout error
Not having QT code or documentation makes this a little harder but ...
When mysql server drops a connection from the client the client does
not detect this until the connection is used again. Which is precisely
the reason that you are getting an error. However mysql C API provides
a mysql_ping function which if the connection is dropped by the server
it will reestablish the connection to the server without having to
recreate the mysql connection handle. So 2 things you can check:
1. Check if QMySQL driver calls this function prior to sending a query
2. If there is a DB ping method that can be called to achieve the same
result
Regards,
Mikhail Veygman
Sep 17, 2009, в 3:00 PM, Thomas Fjellstrom <tfjellstrom at shaw.ca>
написал(а):
> On Thu September 17 2009, Stephen Jackson wrote:
>> On Thu, Sep 17, 2009 at 7:30 PM, Thomas Fjellstrom wrote:
>>> I've created a little long running process (a server), which
>>> connects to
>>> MySQL through the QtSql api, but occasionally the mysql connection
>>> times
>>> out due to inactivity (i assume). I've tried checking
>>> connection.isOpen(),
>>> connection.isValid(), and the connection.lastError(), but none of
>>> them
>>> seem to hint that there's even been a problem. isOpen returns true,
>>> isValid returns true, and lastError().code() is QSqlError::NoError
>>> but
>>> every single query.exec() fails.
>>>
>>> I'm stumped. How can I reliably detect when the connection drops
>>> like
>>> this?
>>
>> Perhaps these two recent threads might be relevant to this problem.
>>
>> http://lists.trolltech.com/pipermail/qt-interest/2009-August/011477.html
>>
>> http://lists.trolltech.com/pipermail/qt-interest/2009-September/012347.html
>>
>
> Partially valid. But lastError() should actually say there's an
> error if
> exec() fails, no?
>
> --
> Thomas Fjellstrom
> tfjellstrom at shaw.ca
> _______________________________________________
> Qt-interest mailing list
> Qt-interest at trolltech.com
> http://lists.trolltech.com/mailman/listinfo/qt-interest
_______________________________________________
Qt-interest mailing list
Qt-interest at trolltech.com
http://lists.trolltech.com/mailman/listinfo/qt-interest
More information about the Qt-interest-old
mailing list