2015-12-14 54 views
1

下面的代碼工作與MySQL:Qt 5.5 QSqlDatabase :: open()總是返回true?

#include <QCoreApplication> 
#include <QtSql/QSqlDatabase> 
#include <QtSql/QSqlError> 
#include <QtSql/QSqlQuery> 
#include <QtSql/QSqlRecord> 
#include <QDebug> 


int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); 
    db.setHostName("192.168.139.128"); 
    db.setDatabaseName("qsql"); 
    db.setUserName("user"); 
    db.setPassword("pass"); 

    if (!db.open()) { 
     qDebug() << "Error = " << db.lastError(); 
    } else { 
     qDebug() << "Openned!" ; 
    } 

    QSqlQuery query("SELECT id, name FROM persons"); 
    QSqlRecord record = query.record(); 

    while (query.next()) { 
     QString id = query.value(record.indexOf("id")).toString(); 
     QString name = query.value(record.indexOf("name")).toString(); 
     qDebug() << query.at() << ":" << id << "," << name; 
    } 

    return a.exec(); 
} 

問題是db.open()總是返回true,無論連接參數如何錯的。我知道這可能是Qt 5.5中的一個已知錯誤(我正在使用它),我想知道是否有解決方法或解決方案?

回答

1

是的,它是QTBUG-47784和相關的QTBUG-47452錯誤。兩者都修復在Qt 5.5.1。不幸的是,沒有改變Qt的源代碼或升級到5.5.1就沒有解決方案。

+0

謝謝,它完成了,更新到5.5.1問題解決。但是我可以問問程序員在5.5.1之前如何連接到mysql? hmmmmmmmmmm qt?! –

+0

此錯誤僅在5.5.0版本中發佈。在以前的版本中一切都很好。我認爲有人像我一樣,只是補丁qt來源,並重新編譯與手動修復。 – misterion