您的位置:首页 > 编程语言 > Qt开发

Qt5.4下连接Mysql,QSqlDatabase: QMYSQL driver not loaded,QSqlDatabase: available drivers: QSQLITE QMYSQL

2015-06-04 21:13 375 查看
首先说明一点,本人对于QT是菜鸟一枚,这次解决了这个问题也算是糊里糊涂,在此分享自己的经历,希望能有所帮助。

这个问题真是让我纠结了好久,首先在Ubuntu14.04 LTS下实验,安装的qt5,也安装了mysql,但是报错:QSqlDatabase: QMYSQL driver not loaded but available,为此在课堂实验时,网上查了很多资料都没有解决问题,最后由于时间紧急,只能使用QT5自带的SQLITE数据库进行实验,但这个问题也算是个隐患了。

知道现在,又要做课设,虽然仍然可以用SQLITE蒙混过关,但是还是决定解决这个问题,由于装了win7和Ubuntu双系统,且Ubuntu系统磁盘空间严重不足,在win7下装了QT5和mysql5.5后,仍然存在这个问题,查了很多资料,重装了好几次,最终解决了问题。期间,博主@tenlee关于重新编译mysql驱动文件的文章对我帮助很大。

文章中很多步骤在网上都有所描述,本文算是一个融合吧,希望能有所帮助。

1.重新编译mysql驱动程序

这一步骤详见博主tenlee/article/1975809.html,文章详细描述了如何重新编译,另外我说明一下自己遇到的问题:

下载的mysql是32位的,在之前是自己安装的64位的mysql,在进行qmake时没有报错,make编译时很多提示undefined,直到注意到版本匹配才发现这个问题所在;
另外一个就是mysql路径不要有空格;
文章中也有评论提到,dll文件所在目录是\qtbase\plugins\sqldrivers而不是\qtbase\src\plugins\sqldrivers\mysql\;
最后一步关键步骤尤其要注意,将安装mysql目录里的libmysql.dll复制到c:\Windows。

2.相关文件复制

将第一步中新生成的qsqlmysql.dll和qsqlmysqld.dll复制至QTdir/tools/mingw491_32/opt/bin,并将mysql安装目录文件下lib中的libmysql.dll拷贝至QTdir/5.4/mingw491_32/bin后,至此没有继续报QSqlDatabase: QMYSQL driver not loaded,QSqlDatabase:
available drivers: QSQLITE QMYSQL的错误。

3.其他问题

解决了上面一个问题后,此处再附加上我碰到的一个数据库不能open的问题。在如下代码中:

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");

db.setHostName("localhost");

db.setDatabaseName("Test");

db.setUserName("root");

db.setPassword("111");

if(db.open())

qDebug()<<"数据库打开成功!";

else

{

qDebug()<<"数据库打开失败!";

return false;

}

设置数据库名称初始为student,但是会报错“数据库打开失败”,网上查看了相关的解释,此处填写的数据库应该是已经创建的,而mysql默认创建的数据库除了系统相关数据库外,有mysql和test两个数据库,数据库名改为test后,显示“数据库打开成功”。

(PS:上述解决方案纯属个人总结出来的,可能不是适用于每一个人。如果能有所帮助,将是我的荣幸。)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: