1 問題描述
在ubuntu18.04系統中使用qt5.10來操作mysql數據庫比較麻煩的事情就是經常在裝完qt工具,寫完代碼一編譯出現無法操作mysql數據庫問題
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7
Unable to open database
要解決這個問題得通過qt5.10源碼重新編譯mysql驅動
2 解決問題
2.1 下載qt5.10源碼
qt5.10源碼下載地址
解壓得到源碼如下:
2.2 編譯mysql驅動
2.2.1 安裝mysql相關庫
進行這個步驟前提是已經安裝好了mysql數據庫,然後執行下面的命令安裝mysql相關庫
sudo apt-get install libmysqlclient-dev
2.2.2 修改配置文件
找到qsqldriverbase.pri文件,其在源碼的路徑如下(路徑要根據實際的路徑做修改)
將其修改成下面的樣子
QT = core core-private sql-private
# For QMAKE_USE in the parent projects.
#include($$shadowed($$PWD)/qtsqldrivers-config.pri)
include(./configure.pri) #這是需要修改的地方,不然後續編譯後出錯
PLUGIN_TYPE = sqldrivers
load(qt_plugin)
DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
2.2.3 編譯源碼
先切換到qmake所在的路徑下,然後執行下面命令(命令中的具體路徑要根據實際情況修改)
sudo ./qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/aarch64-linux-gnu/ -lmysqlclient" /home/pi/work/qt-everywhere-src-5.10.0/qtbase/src/plugins/sqldrivers/mysql/mysql.pro
如果沒報錯,執行下面的命令
sudo make -j4
等待編譯完成,執行下面命令安裝編譯好的庫文件
sudo make install
安裝結果如下
3 總結
至此,整個編譯過程結束,問題解決。解決這種問題沒什麼技術難度,就是過程繁瑣些。只要更換新的qt版本同樣的問題還是會出現,記錄一下方便後續查詢使用。