[Qt-interest] QtSql connection timeout error
Raul Metsma
raul at innovaatik.ee
Fri Sep 18 09:02:23 CEST 2009
For Mysql reconnect we are using following code
QVariant v = db.driver()->handle();
if( qstrcmp( v.typeName(), "MYSQL*" ) == 0 )
{
MYSQL *handle = *static_cast<MYSQL **>( v.data() );
if( handle != 0 )
{
my_bool reconnect = 1;
mysql_options( handle, MYSQL_OPT_RECONNECT, &reconnect );
}
}
It works just fine
Raul Metsma
Mikhail Veygman wrote:
> 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