fedora 18~20 中Qt 5.2.1 解决连接mysql数据库出现QMYSQL driver not loaded的问题
- QT += sql //在.pro文件里加入这一句
- //包含头文件
- #include <QDebug>
- #include <QSqlQuery>
- #include <QSqlDatabase>
- //连接数据库
- QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
- db.setHostName("localhost");
- db.setDatabaseName("mydb");
- db.setUserName("root");
- db.setPassword("123456");
- bool ok = db.open();
- if(!ok)
- {
- qDebug()<<"open db fail";
- return;
- }
- //将数据表中的内容全部列出
- QSqlQuery query;
- query.exec("SELECT * FROM tb_A2");
- while(query.next())
- {
- qDebug()<<query.value(0).toString()<<query.value(1).toString();
- }
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7
在Qt5.2.1中明明已经有MySQL的驱动QMYSQL,为什么还是无法加载呢?
去google了一把,网上大多数是windows下和Qt4.x版本的,还好最终还是解决了,现在稍微记录解决过程下。
//Qt的安装路径
#cd /opt/Qt5.2.1/5.2.1/gcc/plugins/sqldrivers/
#ls
libqsqlite.so libqsqlmysql.so libqsqlpsql.so
#ldd libqsqlmysql.so
这里就会发现:
libmysqlclient_r.so.16 =>not found
怎么解决呢?
//mysql 安装库路径
#cd /usr/lib/mysql/
#ls
INFO_BIN libmysqlclient.so.18 mysqlbug
INFO_SRC libmysqlclient.so.18.0.0 mysql_config
libmysqlclient.so.18.0.0.bak plugin
#cplibmysqlclient.so.18.0.0 libmysqlclient_r.so.16
#mvlibmysqlclient_r.so.16 /lib/
#cd /opt/Qt5.2.1/5.2.1/gcc/plugins/sqldrivers/
#ldd libqsqlmysql.so
看看libmysqlclient_r.so.16是否还是not found
如果出现
libmysqlclient_r.so.16 => /lib/libmysqlclient_r.so.16
则说明已经成功了。如果还不行,再试着创建一软连接看看,
# pwd
/opt/Qt5.2.1/5.2.1/gcc/plugins/sqldrivers
#ln -s /lib/libmysqlclient_r.so.16 ./libmysqlclient_r.so.16
Good luck !