红联Linux门户
Linux帮助

Qt QMYSQL driver not loaded解决办法

发布时间:2016-08-23 15:05:32来源:linux网站作者:苏卡达
在做开发的时候用到了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/ 目录下;再次运行程序,发现连接数据库成功。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/23555.html