Qt6程序连接MySQL数据库驱动未加载Driver not loaded Driver not loaded

       

目录

问题概述

问题详情

解决方案


        环境:Windows11+Qt6.2.4(C++)+MySQL8.0

问题概述

        我用Qt写完一个简单的关于mysql数据库操作的程序后,在本机上运行没有出现任何问题,然而发给其他某个未拥有Qt环境的主机时,启动程序却出现Driver not loaded Driver not loaded。

问题详情

源程序中在连接数据库时做以下处理:

    if (!db.open())
    {
        QString errorText = db.lastError().text();
        ui->text->appendPlainText(errorText);
    }

会在ui的text文本框中打印Driver not loaded Driver not loaded;

然后想起来Qt6默认不包含mysql的动态库文件和驱动,之前的文件是自己重新配置编译过的;

检查打包程序中是否含有驱动文件,发现存在./sqldrivers/qsqlmysql.dll文件:

修改代码判断数据库驱动是否可用,甚至直接打印所有支持的数据库驱动:

if (!QSqlDatabase::isDriverAvailable("QMYSQL"))
{
    ui->text->appendPlainText("The QMYSQL driver is not available.");
}
else
{
    ui->text->appendPlainText("The QMYSQL driver is available.");
}
QStringList list = QSqlDatabase::drivers();//检查包含的数据库驱动
ui->text->appendPlainText("可用数据库驱动:");
for(QString temp : list)
{
    ui->text->appendPlainText(temp);
}

显示QMYSQL存在并可用(如果显示不存在QMYSQL可以去把qsqlmysql.dll文件复制过来重试)

最后判断是否能正确链接到MySQL动态库文件:

        直接把MySQL中libmysql.dll拷贝过来,放到exe文件同级目录下,重启检查:

(默认地址为MySQL下的MySQL Server 8.0\lib\libmysql.dll)

OK!显示连接成功

解决方案

        当在未含有Qt环境的主机上运行含有MySQL数据库相关操作的Qt程序时,在每次打包程序时手动复制动态库文件libmysql.dll到exe程序同级目录中,或者可以把MySQL动态库文件libmysql.dll的上级目录lib文件夹添加到系统环境变量里。

//本文供参考和学习之用,仅代表本人个人见解和学习历程中的记录,可能包含个人主观观点和限制,以及可能存在错误和不足之处。读者在阅览本文中的信息和建议时,应自行判断和承担风险。如读者在使用本文中的信息和建议时遇到问题或发现错误,非常希望能告知作者,以帮助作者改正和完善内容。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值