ubuntu中qt调用mysql中的一些问题

it2024-03-09  57

前言

本人是mysql小白,公司最近有一个需求,设备上的工控机需要搭建一个mysql的数据库。然后设备上的C++应用需要操作这个mysql。

环境说明

系统:ubuntu16.04 IDE:QT 5.12.3 mysql版本:Ver 14.14 Distrib 5.7.31

安装mysql

当然,我们第一步是安装的mysql,这个很简单,就不介绍了,安装的基本上是mysql 最新版本的数据库。安装好了要你创建一个数据路,输入账号和密码。

用demo打开数据库

QSqlDatabase: QMYSQL3 driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7 QSqlDatabasePrivate::removeDatabase: connection ‘1’ is still in use, all queries will cease to work. MySQL connection Failed! “root” Login Failed

会出现上面类似的问题

这个我找了网上,得到一个结果就是qt里面的sql驱动的动态库的版本不太匹配,因为很难QT和mysql的驱动刚刚好匹配。所以有一些动态库的没有连上。到这个动态库的目录通过命令 ldd libqsqlmysql.so 查看库连接情况。注意路径的红框根据每个人安装QT的位置和QT不同的版本有关系。

所以需要在这里的环境重新生成动态库,用QT的源码,这样qt编译我们自己的工程的时候,所有库都能连上。目标的动态库就是这个libqsqlmysql.so。

安装QT源码

安装QT的时候源码是可以被选择安装的。 打开QT安装路径,看有没有Src这个文件夹,这个就是QT的源码。如果没有,需要重新安装QT。如下图 安装QT的时候,将源码选上,如下图 在qt的安装目录里面找到mysql.pro的工程,可以用qt打开,注意不同版本的qt的目录可能不同

打开.pro文件可能是这样的,需要改一下,改成 QMAKE要注销掉 INCLUDEPATH += /usr/include/mysql LIBS += -L/usr/lib/x86_64-linux-gnu/ -lmysqlclient 这个2个是编译必须的库,假设安装mysql的数据库是按照默认的路径来的,这个就是这样设置,否则换成自己的路径。

然后我们再需要到上一层目录,打开qsqldriverbase.pri这个文件,.pro最后有包含这个文件。 将红框内的文件名改为configure.pri,这句话的意思就是include 一个文件叫qtsqldrivers-config.pri,只不过现在这个文件叫configure.pri。 在命令行里面qmake一下,注意自己的qmake目录,qmake完成后,接着make 编译完一定不能有错误,如果有错误就是当初安装mysql的时候有问题。而且这边是可以不用sudo 来操作的,权限没有问题的话。

编译好之后,动态库放在下图的位置~/Qt5.12.3/5.12.3/Src/qtbase/src/plugins/sqldrivers/plugins/sqldrivers 把这个拷贝下来,再去~/Qt5.12.3/5.12.3/gcc_64/plugins/sqldrivers 粘贴覆盖原来的文件 然后重新编译我们的工程,就没有问题了。

最新回复(0)