配置:Ubuntu18.04
测试代码:
QSqlDatabase db =QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("video_manager");
db.setUserName("root");
db.setPassword("123456");
if(db.open()) qDebug()<<"success";
else qDebug()<<"fail";
这里希望验证是否打开了mysql连接,并且显示有多少sql驱动可用,一致显示下面的错误信息:
QSqlDatabase: MYSQL driver not loaded
但也显示有Qsqlite qodbc等驱动可用,因此可以判断是mysql的依赖有问题,在网上查询,定位到是libqmysql.so的问题。
解决方案
1. 查看路径 ~/Qt5.13.2/5.13.2/gcc_64/plugins/sqldrivers ,发现并没有libqmysql.so
2. 查看mysql已正常安装,相关包正常
3.编译libqmysql.so。 这里需要在安装Qt时将source勾选,具体可百度。
进入~/Qt5.13.2/5.13.2/Src/qtbase/src/plugins/sqldrivers/mysql
执行 sudo gedit ./mysql.pro,修改这个文件 最后添加一行 INCLUDEPATH += /usr/include/mysql
4.执行 sudo qmake mysql.pro ,这里要先确认下qmake -v,看一看qmake的路径是不是QT安装目录
5.可能会出现 qsqldriverbase.pri 找不到的问题,这时候返回上一级目录 然后执行qmake,成功编译后就可以重新进行第4步
6. 第4步执行完毕后,执行 make命令,然后执行make install命令,至此,libqmysql.so已经自动生成到了步骤1提到的文件夹,qt中再次运行测试代码,成功连接