Mac 平臺下 QT sql load drivers 問題

Mac 平臺下裝qt環境想對比較簡單,在官網上下載qt的環境包,註冊一個免費的賬號,然後直接開始setup,中途可以選裝iOS和安卓平臺等等。安裝完成後,可以在目錄下找到qt creator.app 直接拖到Applications裏面就可以開始qt編程了;

 

UI界面有點iOS和wpf的影子,需要時間來熟悉和適應,使用沒什麼大問題;

 

再一個就是槽和信號機制,暫時不關注;

 

下面主要記錄下Mac平臺qt的sql驅動裝載。

 

    ui->setupUi(this);

    qDebug() << QSqlDatabase::drivers();//打印qt支持的數據庫類型

    setWindowTitle("SQL");//設置窗口的標題

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("127.0.0.1");
    db.setDatabaseName("dbforqt");
    db.setUserName("root");
    bool ret = db.open();

    if(!ret) //如果數據庫打開失敗,會彈出一個警告窗口
    {
        QMessageBox::warning(this, "警告", "數據庫打開失敗");
        qDebug()<<db.lastError();
    }
    else
    {
        ui->textEdit->setText("數據庫打開成功");
    }

這段代碼運行後,出現錯誤提示:QMYSQL driver not loaded

百度是指望不上的,數據太難搜索,基本都是垃圾,通過關鍵詞把你吸引進來,一看並沒什麼用;

在結合一篇博客和qt官網的教程,需要直接編譯相關的driver lib,Windows下的教程很多,Mac卻沒幾個(再次顯示關鍵詞搜索的重要性)

 

//setep 1:
cd $QTDIR/Src/qtbase/src/plugins/sqldrivers
qmake -- MYSQL_PREFIX=/usr/local/mysql   #這裏的qmake要使用qt自帶的

//step 2:
make sub-mysql

//step 3:
qmake

//step 4:
make install

//step 5:
cd $QTDIR/clang_64/plugins/sqldriver
otool -L libqsqlmysql.dylib

//step 6:
install_name_tool -change /opt/local/lib/mysql55/mysql/libmysqlclient.18.dylib /usr/local/Cellar/mysql/8.0.19/lib/libmysqlclient.21.dylib libqsqlmysql.dylib

注意:QTDIR爲Mac上安裝qt的目錄,這裏縮寫指代

在剛剛安裝完qt的時候,使用qmake會出現錯誤如下:

zsh: command not found: qmake

同樣,網上一大堆,都是說環境變量沒配好,但是解決方法又是基本沒一個能說清楚的(我搜索的結果)

//打開terminal
 sudo vi ~/.bash_profile

//按i進入編輯模式
//輸入
export QTDIR=/Users/channe/Qt5.14.1/5.14.1/clang_64
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QTDIR/lib
export PATH=$PATH:$QTDIR/bin
//QTDIR爲電腦上qt安裝目錄下的clang_64文件加路徑

//esc,然後輸入冒號,輸入wq保存並退出

source ~/.bash_profile//是文件生效

qmake -v //查看qmake版本,如果出現版本則基本證明配置成功了沒問題


qmake問題解決~

 

step 6 中的路徑需要注意幾點,install_name_tool -change /opt/local/lib/mysql55/mysql/libmysqlclient.18.dylib /usr/local/Cellar/mysql/8.0.19/lib/libmysqlclient.21.dylib libqsqlmysql.dylib

step5 之後在qt的安裝目錄下,我的目錄是(/Users/channe/Qt5.14.1/5.14.1/clang_64/plugins/sqldrivers)應該會生成libqsqlmysql.dylib,綠色目錄是本地mysql的安裝路徑,我是用brew安裝的,所以在/usr/local/Cellar

至此~Mac平臺的qt數據庫驅動安裝成功

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("127.0.0.1");
    db.setDatabaseName("dbforqt");
    db.setUserName("root");
    bool ret = db.open();

這段代碼要注意,database要自己去創建,要麼用sql客戶端,要麼命令行,我是用命令行創建”dbforqt“這個數據庫,所以才能連上,很多地方只上了代碼,根本沒有說數據庫需要自己創建,最開始還以爲是直接創建。

最後run一下代碼,open成功~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章