qt 与 mysql 连接失败的问题

qt 与mysql连接出现如下问题:
centos  redhat windows

QSqlDatabase: QMYSQL driver not loaded 
qtsqldriver-config.pri:no such file or directory
library mysql is not fefined
 

1、qt 连接mysql数据代码如下:

QSqlDatabase db_mysql = QSqlDatabase::addDatabase("QMYSQL"); db_mysql.setDatabaseName("student"); db_mysql.setHostName("10.15.21.94"); db_mysql.setPort(3306); db_mysql.setUserName("root"); db_mysql.setPassword("root");
 

2、然后qt版本升级后(本人在使用qt5.14.2),发现连接不上了

执行代码 : QSqlDatabase db_mysql = QSqlDatabase::addDatabase("QMYSQL"); 

的时候提示:QSqlDatabase: QMYSQL driver not loaded 

3、原来是新版本qt里面没有了mysql的库,需要自己编译,编译方法如下:

  • 安装mysql(和qt编译目标位数保持一致,我用的:mysql-5.5.8-winx64.msi)
  • 安装qt(qt-opensource-windows-x86-5.14.2.exe),安装的时候勾选 src。
  • qt打开项目:C:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql,修改mysql.pro文件,修改后如下:

TARGET = qsqlmysqlHEADERS += $$PWD/qsql_mysql_p.hSOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cppOTHER_FILES += mysql.jsonPLUGIN_CLASS_NAME = QMYSQLDriverPluginLIBS += "C:\Program Files\MySQL\MySQL Server 5.5\lib\libmysql.lib"INCLUDEPATH +="C:\Program Files\MySQL\MySQL Server 5.5\include"include(../qsqldriverbase.pri)

4、构建项目

本人(设置mingw73_64),构建后在目录下 C:\plugins\sqldrivers 下生成有 qsqlmysql.dll, 把qsqlmysql.dll拷贝到

C:\Qt\Qt5.14.2\5.14.2\mingw73_64\plugins\sqldrivers 

5、把qt库文件 “C:\Program Files\MySQL\MySQL Server 5.5\lib”目录下 的
      libmysql.dll, libmysql.lib,libmysql.pdb  三个文件拷贝到执行目录下(把 C:\Program Files\MySQL\MySQL Server 5.5\lib 配置到环境变量中也可以)。

下面,连接数据库就ok了。
 

5、注意事项(经验只谈)
     1、qt的qt编译目标位数要和mysql位数保持一致。
      2、自己编译mysql库的时候, 要选择正确的kits,  如mingw 或者 msvc*  等。否则还是链接不上数据库。


centos linux操作系统  qt 编译mysql
编译需要如下准备:
1、qt的安装要安装源代码, mysql驱动项目代码位置:  /Src/qtbase/src/plugins/sqldrivers/mysql
2、安装mysql服务,centos7默认有自带
3、修改mysql.pro文件
源文件:

TARGET = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h

SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp

QMAKE_USE += mysql

OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin

include(../qsqldriverbase.pri)

修改后文件:

TARGET = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h

SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp

#QMAKE_USE += mysql   #

OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin

include(../qsqldriverbase.pri)


#下面对应mysql实际安装位置

INCLUDEPATH+=/usr/include/mysql

LIBS+= -L/usr/lib64/mysql -lmysqlclient_r



然后编译,可能出现问题:

Cannot read /qtsqldrivers-config.pri:
解决这个问题,需要:
1、 /Src/qtbase/src/plugins/sqldrivers下找到文件文件 qsqldriverbase.pri文件,把 qtsqldrivers-config.pri这一行注释掉,修改为 configure.pri即可。
编译后,编译的目标默认位置在根目录下 plugins/sqldrivers/libqsqlmusql.so




 


收集

linux qt下 QSqlDatabase: QMYSQL driver not loaded

出现上述问题是qt安装目录未包含mysql驱动。

解决方法如下:

1.查看系统是否存在libqsqlmysql.so

find / -name libqsqlmysql.so

2.若不存在该文件则安装qt-mysql文件

yum list |grep qt-mysqlyum install qt-mysql.i686

3.此时在/usr/lib/qt4/plugins/目录下应该有文件libqsqlmysql.so,将其拷贝到qt安装目录

cp /usr/lib/qt4/plugins/libqsqlmysql.so /usr/local/Trolltech/Qt-4.8.6/plugins/sqldrivers/

即可。

收集

CentOS7  qt5.12.10  qt5.13.2 qt5.14
有的版本的 qt 中没有了mysql的支持,缺少libmysql.so  ,需要自己下载对应版本的源代码编译 (src/qbase/src/plugins/sqldrivers)。 但是在编译的时候遇到问题  mysql is not defined;  这时候需要 yum -y mysql-devel, 
参考:You need the MySQL / MariaDB header files, as well as the shared library libmysqlclient.so / libmariadb.so. Depending on your Linux distribution, you may need to install a package which is usually called "mysql-devel" or "mariadb-devel".



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值