在做开发的时候用到了mysql, 用以下代码测试是否可以用 mysql
qDebug ( ) < < QSqlDatabase : : drivers ( ) ;
qDebug ( ) < < QCoreApplication : : libraryPaths ( );
测试输出结果为:
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/ 目录下 ;再次运行程序,发现连接数据库成功 。