fedora 18~20 中Qt 5.2.1 解決連線mysql資料庫出現QMYSQL driver not loaded的問題
如上,我編寫了一個簡單的測試資料庫連線的程式,執行時出現了下面的錯誤提示:QT += sql //在.pro檔案里加入這一句 //包含標頭檔案 #include <QDebug> #include <QSqlQuery> #include <QSqlDatabase> //連線資料庫 QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setDatabaseName("mydb"); db.setUserName("root"); db.setPassword("123456"); bool ok = db.open(); if(!ok) { qDebug()<<"open db fail"; return; } //將資料表中的內容全部列出 QSqlQuery query; query.exec("SELECT * FROM tb_A2"); while(query.next()) { qDebug()<<query.value(0).toString()<<query.value(1).toString(); }
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7
在Qt5.2.1中明明已經有mysql的驅動QMYSQL,為什麼還是無法載入呢?
去google了一把,網上大多數是windows下和Qt4.x版本的,還好最終還是解決了,現在稍微記錄解決過程下。
//Qt的安裝路徑
#cd /opt/Qt5.2.1/5.2.1/gcc/plugins/sqldrivers/
#ls
libqsqlite.so libqsqlmysql.so libqsqlpsql.so
#ldd
libqsqlmysql.so
這裡就會發現:
libmysqlclient_r.so.16
=>not found
怎麼解決呢?
//mysql 安裝庫路徑
#cd /usr/lib/mysql/
#ls
INFO_BIN libmysqlclient.so.18 mysqlbug
INFO_SRC libmysqlclient.so.18.0.0 mysql_config
libmysqlclient.so.18.0.0.bak plugin
#cplibmysqlclient.so.18.0.0 libmysqlclient_r.so.16
#mvlibmysqlclient_r.so.16 /lib/
#cd /opt/Qt5.2.1/5.2.1/gcc/plugins/sqldrivers/
#ldd libqsqlmysql.so
看看libmysqlclient_r.so.16是否還是not
found
如果出現
libmysqlclient_r.so.16 => /lib/libmysqlclient_r.so.16
則說明已經成功了。如果還不行,再試著建立一軟連線看看,
# pwd
/opt/Qt5.2.1/5.2.1/gcc/plugins/sqldrivers
#ln -s /lib/libmysqlclient_r.so.16
./libmysqlclient_r.so.16
Good luck !