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

首先说明一点,本人对于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的http://blog.csdn.net/tenlee/article/details/43614241,文章详细描述了如何重新编译,另外我说明一下自己遇到的问题:

  • 下载的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:上述解决方案纯属个人总结出来的,可能不是适用于每一个人。如果能有所帮助,将是我的荣幸。)


你可能感兴趣的:(Qt5.4下连接Mysql,QSqlDatabase: QMYSQL driver not loaded,QSqlDatabase: available drivers: QSQLITE QMYSQL)