QPSQL Multithread Crash



  • Hello,

    Whats wrong with running this code in a thread:

    @ QSqlDatabase db = QSqlDatabase::addDatabase( "QPSQL", QString::number( (long long)(QThread::currentThread())) );
    db.setHostName( QString::fromStdString( m_Hostname ) );
    db.setPort( m_Port );
    db.setDatabaseName(QString::fromStdString( m_DatabaseName ));
    db.setUserName(QString::fromStdString( m_User ));
    db.setPassword(QString::fromStdString( m_PW ));

    bool online = db.open();
    if(!online) {
    //db.close();
    m_HasError = true;
    return DATA_CANCELLED;
    };

    QSqlQuery query(QString::fromStdString( m_CountMeltingsQuery ), db);@

    I mwan this runs, but when i close the MainWindow... The program crashes at:

    qsqlpsqld4.dll!QPSQLDriver::close() Zeile 848 C++ <--- Crash!
    QtSqld4.dll!QSqlDatabase::close() Zeile 882 C++
    ->

    The code in qpsqldriver is:
    @ if (d->connection)
    PQfinish(d->connection);
    d->connection = 0;@



  • Did you read "Threads and the SQL Module":http://qt-project.org/doc/qt-4.8/threads-modules.html#threads-and-the-sql-module of the QSqlDatabase documentation?

    Did you open another connection in another thread?
    Are you sure the code is running in the new thread?


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.