QT 5.12.11 mysql8 提示Driver not loaded Driver not loaded

本文档详细介绍了如何在QT中编译MySQL驱动并进行配置,包括修改源码文件、设置编译路径、拷贝必要库文件到QT安装目录,确保QT能够成功连接到MySQL8.0数据库。特别提示,需使用Release模式进行编译。

1. 编译mysql 插件驱动

不想编译的我编译好了:sqldrivers.rar-MySQL文档类资源-CSDN文库https://download.csdn.net/download/liyang_nash/35131774

前提:安装QT的时候,记得勾选sources

打开qt安装目录, 例如目录D:\install\qt5_12_11\5.12.11\Src\qtbase\src\plugins\sqldrivers\mysql\mysql.pro

双击pro,用QTCreator打开,做如下修改:

(1)qsqldriverbase.pri文件

#lynash include($$shadowed($$PWD)/qtsqldrivers-config.pri)
include(./configure.pri)

(2)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)

INCLUDEPATH +=E:/install/mysql-8.0.16-winx64/include/
LIBS += E:/install/mysql-8.0.16-winx64/lib/libmysql.lib
DESTDIR = ../mysql/mysqlDll

然后点击 "重新构建".  重新构建划重点.

(3)编译后的文件如下:

D:\install\qt5_12_11\5.12.11\Src\qtbase\src\plugins\sqldrivers\mysql\mysqlDll\

qsqlmysql.dll  qsqlmysql.lib  qsqlmysqld.dll qsqlmysqld.lib

(4) 把有用的文件拷贝到如下路径:

D:\install\qt5_12_11\5.12.11\msvc2017_64\plugins\sqldrivers\

qsqlmysql.dll  qsqlmysql.lib  qsqlmysqld.dll qsqlmysqld.lib

2. 拷贝mysql安装目录库到qt编译bin目录下

没有的可以下载:

libmysql.libeay32等4个库.rar-MySQL文档类资源-CSDN文库https://download.csdn.net/download/liyang_nash/35131644

(1) E:\install\mysql-8.0.16-winx64\bin\

ssleay32.dll, libeay32.dll

(2) E:\install\mysql-8.0.16-winx64\lib\

libmysql.dll, libmysql.lib

以上拷贝到 

D:\install\qt5_12_11\5.12.11\msvc2017_64\bin\

3. QT可以连接mysql8.0了

记得, 用release编译, release划重点.

<think>好的,我现在要帮用户解决在Ubuntu 18.04下用Qt 5.12.9连接MySQL的问题。首先,我得回忆一下Qt连接数据库的一般步骤,以及可能遇到的常见问题。 首先,用户需要安装QtMySQL。Ubuntu 18.04默认的仓库里可能有Qt 5.12.9吗?可能需要用户通过其他方式安装,比如官方安装包或者第三方PPA。不过用户可能已经安装好了Qt,所以这部分暂时先不考虑。接下来是MySQL的安装,用户可能需要安装MySQL Server和客户端库,这里可能需要使用sudo apt-get install mysql-server libmysqlclient-dev。 然后,Qt连接MySQL需要对应的驱动QtMySQL驱动插件是libqsqlmysql.so,但默认情况下,Qt可能没有预先编译这个驱动,尤其是如果用户是通过系统包管理器安装的Qt。这时候用户需要自己编译MySQL驱动。编译驱动需要Qt的源代码,特别是sql模块。用户需要找到Qt源码中的mysql驱动目录,通常是Qt/Src/qtbase/src/plugins/sqldrivers/mysql。 接下来,用户需要确认是否安装了MySQL的开发文件,也就是libmysqlclient-dev。如果没有的话,编译时会找不到头文件或者库文件。然后,使用qmake来生成Makefile,这里可能需要指定MySQL的头文件和库的路径,比如在.pro文件中添加INCLUDEPATH和LIBS,或者在qmake命令中传递参数,比如INCLUDEPATH=/usr/include/mysql和LIBS=-L/usr/lib/mysql -lmysqlclient。 编译完成后,生成的驱动插件需要被放到Qt的plugins/sqldrivers目录下,这样Qt应用程序在运行时才能找到这个驱动。用户可能需要检查Qt的安装路径,或者将驱动复制到应用程序的目录中,特别是在部署时。 然后,用户需要在代码中引用QSqlDatabase,添加MySQL数据库,设置主机名、用户名、密码、数据库名等参数。记得测试连接是否成功,如果失败的话,需要查看错误信息,常见的比如驱动未加载,这时候可能是驱动没有正确编译或者路径不对;或者是MySQL服务器没有运行,用户权限不足,防火墙设置等等。 可能的常见问题包括: 1. 驱动编译失败,可能因为缺少开发包或者路径错误。 2. 运行时找不到驱动驱动放置的位置不正确。 3. MySQL服务器配置问题,比如bind-address设置为127.0.0.1以外的地址,导致无法远程连接。 4. 用户权限问题,MySQL用户可能需要允许从本地或特定主机连接。 另外,Qt 5.12.9和MySQL版本之间的兼容性也需要考虑,比如如果用户使用的是MySQL 8.0,默认使用caching_sha2_password认证,而旧版的Qt驱动可能不支持,需要将用户认证方式改为mysql_native_password。这可能会涉及到MySQL的用户权限调整,比如执行ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';。 在指导用户时,需要分步骤说明,确保每一步都清晰,比如先安装依赖库,然后编译驱动,配置Qt项目,编写测试代码,处理可能出现的错误。同时,提醒用户检查MySQL服务是否运行,用户权限是否正确,以及网络设置是否有问题。 可能还需要用户验证是否生成了正确的驱动文件,检查文件是否存在,权限是否正确。另外,如果在运行时出现“QMYSQL driver not loaded”的错误,通常是因为驱动未正确加载,这时候需要确认驱动文件的依赖是否满足,可以用ldd命令检查驱动库的依赖是否都满足,特别是libmysqlclient.so是否正确链接。 总结步骤大概是: 1. 安装MySQL和开发库。 2. 编译QtMySQL驱动。 3.驱动文件放到正确的位置。 4. 编写测试代码,建立数据库连接。 5. 处理可能的错误和配置问题。 需要确保用户按照正确的顺序操作,并且在每个步骤后验证是否成功,比如编译驱动后检查是否生成了.so文件,或者在代码中尝试连接后捕获错误信息。</think>在Ubuntu 18.04下使用Qt 5.12.9连接MySQL需完成以下步骤,分为环境准备、驱动编译、代码实现和问题排查四个阶段: --- ### 一、环境准备 1. **安装MySQL Server及开发库** ```bash sudo apt update sudo apt install mysql-server libmysqlclient-dev ``` 2. **验证Qt安装** 确保Qt 5.12.9已正确安装,且包含`qmake`工具。可通过终端验证: ```bash qmake -v ``` --- ### 二、编译MySQL驱动 Qt默认未提供预编译的MySQL驱动,需手动编译: 1. **定位Qt源码路径** 找到Qt安装目录下的驱动源码路径,例如: ```bash /opt/Qt5.12.9/5.12.9/Src/qtbase/src/plugins/sqldrivers ``` 2. **进入驱动目录** ```bash cd /opt/Qt5.12.9/5.12.9/Src/qtbase/src/plugins/sqldrivers ``` 3. **生成Makefile** 使用`qmake`指定MySQL头文件和库路径: ```bash qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/mysql -lmysqlclient" mysql.pro ``` 4. **编译并安装** ```bash make sudo make install ``` - 生成的驱动文件`libqsqlmysql.so`会保存在`/opt/Qt5.12.9/5.12.9/gcc_64/plugins/sqldrivers/` --- ### 三、代码实现 1. **添加数据库支持** 在项目文件(`.pro`)中添加SQL模块: ```qmake QT += sql ``` 2. **示例代码** ```cpp #include <QSqlDatabase> #include <QDebug> int main() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setPort(3306); db.setUserName("root"); db.setPassword("your_password"); db.setDatabaseName("test_db"); if (db.open()) { qDebug() << "Connected to MySQL!"; db.close(); } else { qDebug() << "Connection failed:" << db.lastError().text(); } return 0; } ``` --- ### 四、常见问题及解决 1. **驱动未加载(QMYSQL driver not loaded)** - 检查`libqsqlmysql.so`是否在Qt的插件目录中。 - 使用`ldd`验证依赖: ```bash ldd libqsqlmysql.so | grep mysql ``` 确保输出包含`libmysqlclient.so`。 2. **MySQL 8.0认证问题** 若使用MySQL 8.0,需修改用户密码验证方式: ```sql ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; FLUSH PRIVILEGES; ``` 3. **路径权限问题** 确保应用程序对驱动文件有读取权限,必要时复制驱动到项目目录: ```bash cp /opt/Qt5.12.9/5.12.9/gcc_64/plugins/sqldrivers/libqsqlmysql.so /your/project/path/ ``` --- 通过以上步骤,应能成功连接MySQL数据库。若仍遇问题,可结合`db.lastError().text()`输出的具体错误信息进一步排查。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值