需求

使用 qt 连接 mysql 时报错,提示 QSqlDatabase: QMYSQL driver not loaded。

解决

qt 连接 mysql 的通道从上向下:

  • qt 程序
  • qt 数据库插件即: qsqlmysql.dll 和 qsqlmysqld.dll
  • mysql 库: libmysql.dll
  • mysql 可执行文件: mysql.exe

检查是否有 qt 数据库插件

这种一般报错就是: QSqlDatabase: QMYSQL driver not loaded

QStringList drivers = QSqlDatabase::drivers();  //获取现在可用的数据库驱动
foreach(QString driver, drivers) {
    qDebug() << driver;
}

查看输入里面有没有 "QMYSQL", 如果没有,就需要按照 qt 官网的方法编译一个出来。

检查 mysql 库

这种一般的报错就是连接不上。

编译调试的时候,一般可以自动找到 libmysql.dll, 但是 release 的时候,就会缺少这个了。需要从 mysql 的安装目录下面的 lib 文件夹中,把这个库复制到 release 之后的文件夹内。

检查 mysql 可执行文件

这种报错就是连接步上。

一般是目标机器上没有安装 mysql, 最简单的办法就是安装 mysql 选择 client 版本就可以了。

版本问题

qt 可能和 mysql 因为 32位64位的问题,导致不能用,这个最好统一为 64位。

参考