【经验分享】Qt關於driver not loa…

耐心看完全文,絕對會有收穫的!
问题描述:
自己写好的一个工程,拿到Linux Ubuntu操作系统下运行不起来,提示QMYSQL driver not loaded.驱动无法加载!
我是刚转到Ubuntu下的 ,Qt SDK也是安装比较新的2009.04版(Qt 4.5.3).安装了MySQL的dev包.(make sure that you've installed the mysqlclient,mysql libs and so on).

问题解决:

出现 drive not loaded 的原因有如下几个
1.安装qt的时候还没有安装mysql.也就是说应该在安装qt之前安装mysql数据库.这个错误由QSqlDatabase抛出db.lastError().text()
2.将以前编译的mysql驱动程序拷入qt文件夹位置放错.
3.你的程序写错了.
4."driver not loaded" 是由query.lastError().text()抛出的错误.
5.gcc版本不一样(本机和目标机).
既然知道原因了,解决起来也就非常轻松了.
1.重新安装qt,重新安装mysql驱动
2和3的解决方法我就没有什么好说的了.
4. 说明你的query在创建的时候没有和qsqldatabase建立起关联.正确的方法是声明qsqldatabase后就声明query.如果你希望一 个连接能够和多个query关联使用如下语法:QSqlQuery query(db),db是QSqlDatabase的实例名.
5.同步gcc版本咯..



首先,运行如下测试代码:
//don't forget about QT+= sql
qDebug() << QSqlDatabase::drivers();
QSqlDatabase db( QSqlDatabase::addDatabase( "QMYSQL" ) );
qDebug() << db.lastError();
第一个qDebug语句输出的是 可用的数据库驱动列表.("QSQLITE", "QSQLITE2",   "QPSQL7", "QPSQL") 
如果无法加载QMYSQL驱动,第二个qDebug语句输出的是关于MYSQL数据库发生的最后一个错误信息"QSqlError(-1, "driver not loaded", "driver not loaded") ,大概是这样的,有点记不太清楚了 .
之后,按照Qt帮助文档的说明,Build the QMYSQL Plugin on Linux:
首 先,我去找到了MySQL的头文件目录: /usr/include/mysql   ,接着找到了MySQL的共享库目录: /usr/lib   (目录下有很多/usr/lib/libmysql*),这两个目录是要告诉qmake的.然后把当前目录改变到/home /wuxiaoye/qtsdk-2009.04/qt/src/sql/drivers/mysql目录下(我的QT安装路径是/home /wuxiaoye/qtsdk-2009.04/qt).
然后按照提示输入qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib -lmysqlclient_r" mysql.pro
继续,输入make.奇怪的事情发生了 .报错了... 
【经验分享】Qt關於driver <wbr>not <wbr>loaded.問題的解決 
接下来,修改$QTDIR/src/plugins/sqldrivers/mysql/mysql.pro 文件,添加了一句 INCLUDEPATH += /usr/include/mysql   (这个目录就是刚提到的mysql头文件目录 ).然后,确定下qmake的时候是不是用的系统自带的老版本.终端输入qmake -v.发现刚用的 qmake是系统自带的Qt 4.3.4的qmake.解决方法:绝对路径调用最新的qmake:

$QTDIR/bin/qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib -lmysqlclient_r" mysql.pro
make
搞定.耶!先别急着乐.继续在刚刚的那个路径下输入make install.这下就可以开始乐了 ,打开/home/wuxiaoye/qtsdk-2009.04/qt/plugins/sqldrivers 看看是不是多了个 libqsqlmysql.so.
完全成功了 ,嘿嘿.

PS:
有的朋友可能會發生這樣的情況:從別的機器上copy了數據庫驅動(libqsqlmysql.so)
,但是運行程序仍然報錯driver not loaded.
這個時候,該檢查下你所拷貝的sql driver所鏈接的libmysqlclient_r.so.* 是否存在目標機上。
方法就是切換到plugins/sqldrivers/。運行 ldd libqsqlmysql.so 。它會鏈接到一個libmysqlclient_r.so.* 。看看目標機上是否有這個。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值