1. 程式人生 > >Qt QMYSQL driver not loaded 解決辦法

Qt QMYSQL driver not loaded 解決辦法

在做開發的時候用到了mysql, 用以下程式碼測試是否可以用 mysql  
    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/
 
目錄下 ;再次執行程式,發現連線資料庫成功 。