MySQL没有在QT应用程序中连接

时间:2011-10-07 19:22:14

标签: mysql qt mingw32

我正在开发一个数据库驱动的QT项目(基本上是日记/日记工具),最终将允许用户连接MySQL,SQLite和Postgres。目前,只构建了MYSQL模块,但我在使其在Windows上运行时遇到了问题。

我正在针对Windows 7上的静态构建的QT 4.7.4库进行编译,这使得程序可以正确地找到QMYSQL驱动程序。我知道这是因为当我静态构建所有内容时,我没有收到“QMYSQL驱动程序未加载”错误。但是,当我尝试连接到数据库时,我得到“QSqlQuery :: exec:database not open”错误。起初,我认为这是因为远程数据库不接受来自我的地址的连接,但我无法连接到localhost(以root身份,使用正确的密码)。

我知道应用程序代码很好,因为它在Linux上完美运行(相同的QT版本,非静态构建......在没有任何额外步骤的情况下构建在Linux上似乎“正常工作”)所以我想知道是否QT在Windows上正确构建。我写了一个批处理文件来自动化构建过程:

TITLE Build QT 4.7.4 (static)    
ECHO ON

cd C:\qt-4.7.4\

path C:\MinGW\bin

configure.exe -opensource -platform win32-g++ -release -static -qt-sql-mysql -l mysql -I C:\include -L C:\lib   
PAUSE

mingw32-make

PAUSE

我是否在Windows上正确构建QT?当我第一次遇到这个问题时,我遵循了这些说明:http://rag.com.au/linux/qt4howto.html但是在最近的构建之后它仍然不起作用。

我必须静态构建QT,因为没有它我的应用程序找不到QMySQL驱动程序。起初,我尝试使用MySQL 5.5社区版中的includes / libraries,但由于某种原因,构建失败了一半。 (它不喜欢那个特定的libmysql.lib)当我尝试使用我在Linux中编译的头文件/库时,构建完成正常,但我现在遇到了这个问题。

编译QT时存储头/库的位置是否重要?

另外,我有一个三核CPU。在Windows构建期间,我注意到mingw32-make只使用了一个核心,因为我的CPU一直固定在33%。有没有办法让它使用整个CPU所以不需要4-5个小时来构建?

提前感谢您的任何帮助/建议。

1 个答案:

答案 0 :(得分:0)

尝试此操作以获取适用于您的驱动程序。

QSqlDatabase * db = new QSqlDatabase;
qDebug() << db->drivers();

这将为您提供可用驱动程序列表。
检查“QMYSQL”是否存在。

如果不存在,则必须安装驱动程序。

检查this link是否安装。