QT SQL Driver not loaded的问题

1 篇文章 0 订阅
1 篇文章 0 订阅

在采用QT5 编写SQL相关程序时,执行的时候出现sql driver not loaded的情况。

采用如下语句:

QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
qDebug() << db.lastError();

 出错提示是: 

QSqlDatabase: QPSQL driver not loaded

QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7

QSqlError("", "Driver not loaded", "Driver not loaded")


但是提示明明是各种数据库都支持,实际尝试的时候只有QSQLITE,QODBC支持,其余的都有问题。

解决办法网上挺多的,各种都是重新编译SQL库,或者加环境变量,用depends walker等;后来采用depends walker才解决了问题。

其实就是dll之间互相引用出了问题,注意检查下面几点,都通过了应该都能解决。

1.  程序执行采用哪里的库,即PATH问题,很多时候你认为系统应该找得到的地方,其实人家并没有找到那个目录。例如在QT目录下,有好几个地方都有sqldrivers的目录,其实最后系统根本没有找到这些地方,而是找到了mingw492_32/bin目录下了

2. 32bit库和64bit库必须对应

3. depends walker可以先看看没问题的dll,例如QSQLITE,看他们找到和没找到那些库;然后再定位目标库(本例:qsqlpsql.dll)需要哪些库,一个个复制到编译器或者运行环境里面。在此例中,搜索的顺序从qsqlpsql.dll -> libpq.dll ->libintl-8.dll->libiconv-2.dll; 最后干脆把所有的dll一并Copy到d:\Qt\Qt5.5.1\5.5\mingw492_32\bin\就成功了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值