关于QT连接数据库程序的发布问题

20 篇文章 4 订阅

最近弄一个数据管理系统,最后遇到的问题是:执行release,然后windeployqt打包后,在本机能完美的运行,可是到了其他电脑后,就会显示连接不上数据库。

那么狠显然,就是数据库的驱动问题。

要解决这个问题,我们可以有如下几种方法:

1.在release文件夹下新建plugins文件夹,然后将qt安装目录下的/plugins/sqldrivers拷贝至此

而后,在main.cpp中加入如下代码:

QApplication::addLibraryPath("./plugins");

重新编译,发布即可。

********这里要非常注意,因为我就犯了这个错误,必须得保证qsmysql.dll是可用的,那么可能你会问了,既然之前能运行,那么为什么会出错。

如果你的电脑里存在几个qsqmysql.dll文件呢,你该选哪个呢?这个就只有试了,别无他法,或者就是你能很准确的知道这个.dll文件就是可以运行的。如果不确定的话,就导网上下载一个就ok了,如果是新手,我建议你自己动手编译一下,虽然在QT5.3之后就自带了数据库驱动,但是他缺乏了依赖关系吧,于是,没办法,接着更新,5.6我没用过,不知道有没有解决了这个问题。


2.在不重新编译的情况下,在exe同级目录下新建plugins目录,同样将sqldrivers拷贝过去。

而后,新建qt.conf文件,内容如下:

[Paths]

Plugins=./plugins


这里即指定了插件库的位置,还有的前辈说,可以不用新建plugins目录,只需将.dll复制过来,直接新建qt.conf文件为空就可以了,这样就默认指定了插件在当前目录。


3.其实我觉得,上面的都是废话,有了windeployqt这个强大方便的工具以后,我们直接windeployqt就行了,它会自动帮我们做这些事,但是,它复制过来的.dll不一定是可用的。这里就需要自己去实验是不是对的了。还有就是我们需要在exe同级目录下加入libmysql.dll文件,这是mysql自带的,在mysql目录下的lib/plugins可以找到,可能会有所不同,大概就这样吧。


***另外,如果libmysql.dll与qsqmysql.dll不匹配的话会出现内存溢出的情况。

好了,就说这么多了,如果有问题,欢迎大家提出来。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值