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/  目录下 ;再次运行程序,发现连接数据库成功 。

你可能感兴趣的:(数据库)