为什么在QT5.2中没有加载QMYSQL驱动程序?

时间:2014-01-30 08:06:36

标签: mysql qt

我的程序是用QT5.2编写的,并使用mysql。我听说QT5.2已经包含了MYSQL驱动程序。但是,当我编译并运行我的程序时,它已成功编译但运行失败并出现错误:

   QSqlDatabase: QMYSQL driver not loaded
   QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7

我的程序是这样的:

     QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
     db.setHostName("localhost");
     db.setDatabaseName("tradingsystem");
     db.setUserName("root");
     db.setPassword("");
     if(!db.open())
     {
          //.....;
     }

在.pro中我添加了这个:

    QT += sql

Mysql由XAMPP提供。我的操作系统是win7-x64-sp1-ultimate,XAMPP版本1.8.2.System Path如下:

    C:\Program Files (x86)\SepanderSoft;
    C:\Program Files (x86)\Intel\iCLS Client\;
    C:\Program Files\Intel\iCLS Client\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;
    C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;
    C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;
    C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;
    C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;
    C:\Program Files\Intel\WiFi\bin\;
    C:\Program Files\Common Files\Intel\WirelessCommon\;
    C:\Program Files (x86)\Intel\OpenCL SDK\3.0\bin\x86;
    C:\Program Files (x86)\Intel\OpenCL SDK\3.0\bin\x64;
    C:\Program Files\Microsoft\Web Platform Installer\;
    C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;
    C:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;
    C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;
    D:\Software\MySQL\MySQL Enterprise Backup 3.8.2\

XAMPP的位置是:

    D:\XAMPP

QT位置是:

    D:\Software\Qt

我在D:\ Software \ MySQL中安装了mysql server-5.6-64bit,当它与XAMPP中的mysql冲突时,我卸载了mysql server-5.6-64bit。

6 个答案:

答案 0 :(得分:8)

我遇到了同样的错误并通过复制文件

成功修复了它

C:\Program Files (x86)\MySQL\MySQL Connector.C 6.1\lib\libmysql.dll

进入

C:\Qt\Qt5.3.1\5.3\mingw482_32\bin

Youtube link

答案 1 :(得分:5)

我遇到了同样的问题,甚至“HồSĩSơn”的解决方案也没有用。然后我发现我已经安装了64位版本的MySQL并且正在尝试使用32位版本的Qt。

从以下位置复制dll不起作用:

C:\Program Files\MySQL\MySQL Connector.C 6.1\lib\libmysql.dll

而是从以下位置下载32位版本的libmysql.dll:

https://dev.mysql.com/downloads/connector/c/

并将其复制到你的mingw文件夹。

就我而言,我必须将DLL复制到msvc2010文件夹,因为我使用的是Visual Studio编译器:

C:\Qt\5.4\msvc2010_opengl\bin

希望这会有所帮助。 :)

答案 2 :(得分:3)

因声誉不足而加帖。

我能够使用HồSĩSơn,Ram和Sumanth的帖子(谢谢你们两个)来解决我的问题。

以下是我的确切步骤:

访问帮助,检查我正在运行的Qt Creator版本 - >关于Qt Creator。 我发现我正在运行32位版本。

现在我知道我正在运行的版本,我导航到32位版本的MySQL连接器。 这可以在C:\ Program Files(x86)\ MySQL \ MySQL Connector C 6.1 \ lib。

中找到

我复制了该文件夹中的libmysql.dll文件,并将其粘贴到C:\ Qt \ 5.9.2 \ mingw53_32 \ bin \中,因为我正在使用MinGW进行编译。 请注意,这是32位文件夹。

重新启动Qt Creator并重建我的项目。

挑战我的步骤是匹配Qt Creator的x位版本,我的编译器和驱动程序,然后重新启动Qt Creator。

希望这有助于那里的人!

答案 3 :(得分:1)

我面临同样的问题,并通过以下步骤解决。

通过做6个小时的研究,最终问题得到了解决。 我使用的是64位Windows 10,32位Qta和64位MySQL服务器。

QSQLITE和QODBC运行良好,但面临QMYSQL问题。

后来我下载了" mysql-connector-c-6.1.11-win32.zip " (如果它是32位QT)来自https://dev.mysql.com/downloads/connector/c/复制" libmysql.dll "到QT路径C:\ Qt \ 5.9.3 \ mingw53_32 \ bin。

哇..它运作得很好。

答案 4 :(得分:1)

我也花了大约2天的时间解决此问题,这是我的解决方法:

我的设置: 64位Windows 10 QT 5.11.1和QT Creator 4.7.1 32位 正在构建一个64位应用程序...

下载此zip文件: mysql-connector-c-6.1.11-winx64.zip 从此网站: https://downloads.mysql.com/archives/c-c/

复制此文件: C:.. \ mysql-connector-c-6.1.11-winx64.zip \ mysql-connector-c-6.1.11-winx64 \ lib \ libmysql.dll

进入此目录: C:\ Qt \ 5.11.1 \ msvc2015_64 \ bin

注意:将'msvc2015_64'更改为您正在使用的任何编译器,尽管它必须是64位。

在部署应用程序时,将libmysql.dll复制到与.exe文件相同的目录中 我希望这可以帮助您花些时间和沮丧!

答案 5 :(得分:0)

我在没有安装开发人员工具的测试环境中遇到了这个问题。 libmysql.dll已正确部署在应用程序旁边,但错误相同。

经过数小时的搜索并尝试了可能的解决方案后,我发现了一篇帖子,其中有人提到他在DLL上使用了Dependency Walker。我遵循了这个建议,结果发现它缺少MSVCR120.dll,该文件随Visual Studio 2013的VCRedist 12.0一起提供。安装VCRedist 12.0为我解决了这个问题。

不幸的是,由于我从我们公司的第三方库中获取了libmysql.dll,所以我无法确定libmysql.dll来自哪个软件包。因此,对于VCRedist版本的要求在DLL的不同版本中可能会有所不同。