Qt QMYSQL driver not loaded 解決辦法
阿新 • • 發佈:2019-01-11
在做開發的時候用到了mysql, 用以下程式碼測試是否可以用 mysql
qDebug()<< QSqlDatabase::drivers();
qDebug()<< QCoreApplication::libraryPaths();
測試輸出結果為:
發現第二行 libmysqlclient_r.so.16 => not found 這個錯誤,說明連結不到 locate libmysqlclient_r.so.16然後執行 locate libmysqlclient_r.so.16 發現確實是沒有 啊, 於是在檔案系統中搜索 libmysqlclient_r.so ,發現有一個/usr/lib/i386-linux-gnu/libmysqlclient_r.so.18;然後將libmysqlclient_r.so.18 拷貝一份並 重新命名 我們需要的 libmysqlclient_r.so.16 , 放置在 /usr/lib/i386-linux-gnu/ 目錄下 ;再次執行程式,發現連線資料庫成功 。
qDebug()<< QSqlDatabase::drivers();
qDebug()<< QCoreApplication::libraryPaths();
測試輸出結果為:
("QSQLITE", "QMYSQL", "QMYSQL3", "QPSQL", "QPSQL7")
("/home/liqi/Qt5.2.0/5.2.0/gcc/plugins", "/home/liqi/workspace/QtWorkSpace/build-designer-Desktop_Qt_5_2_0_GCC_32bit-Debug")
然後在 /home/liqi/Qt5.2.0/5.2.0/gcc/plugins目錄下查詢, 發現有 sqldrivers 這個檔案,也就是說 Qt 5.2 支援 mysql ,
但是為什麼在執行程式的時候提示: QMYSQL driver not loaded, 鬱悶(^_^)
進入到/home/liqi/Qt5.2.0/5.2.0/gcc/plugins目錄,發現有一個 libqsqlmysql.so 檔案, 然後執行: ldd libqsqlmysql.so ,打印出以下提示:
linux-gate.so.1 => (0xb76fe000) libmysqlclient_r.so.16 => not found libQt5Sql.so.5 => /home/liqi/Qt5.2.0/5.2.0/gcc/plugins/sqldrivers/./../../lib/libQt5Sql.so.5 (0xb7690000) libQt5Core.so.5 => /home/liqi/Qt5.2.0/5.2.0/gcc/plugins/sqldrivers/./../../lib/libQt5Core.so.5 (0xb71c6000) libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb70dd000) libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb6f29000) libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb6f0e000) libicui18n.so.51 => /home/liqi/Qt5.2.0/5.2.0/gcc/plugins/sqldrivers/./../../lib/libicui18n.so.51 (0xb6cec000) libicuuc.so.51 => /home/liqi/Qt5.2.0/5.2.0/gcc/plugins/sqldrivers/./../../lib/libicuuc.so.51 (0xb6b72000) libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb6b6d000) libgthread-2.0.so.0 => /usr/lib/i386-linux-gnu/libgthread-2.0.so.0 (0xb6b6a000) librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xb6b61000) libglib-2.0.so.0 => /lib/i386-linux-gnu/libglib-2.0.so.0 (0xb6a5d000) libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb6a19000) libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb69fc000) /lib/ld-linux.so.2 (0xb76ff000) libicudata.so.51 => /home/liqi/Qt5.2.0/5.2.0/gcc/plugins/sqldrivers/./../../lib/libicudata.so.51 (0xb54b3000) libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0xb5472000)
發現第二行 libmysqlclient_r.so.16 => not found 這個錯誤,說明連結不到 locate libmysqlclient_r.so.16然後執行 locate libmysqlclient_r.so.16 發現確實是沒有 啊, 於是在檔案系統中搜索 libmysqlclient_r.so ,發現有一個/usr/lib/i386-linux-gnu/libmysqlclient_r.so.18;然後將libmysqlclient_r.so.18 拷貝一份並 重新命名 我們需要的 libmysqlclient_r.so.16 , 放置在 /usr/lib/i386-linux-gnu/