Qt不加载任何数据库驱动程序

时间:2017-07-30 22:04:22

标签: mysql qt

我将我的项目从windows server 2003(32bit)上的qt4.8.4移植到win7(64bit)上的qt5.3.1,我静态构建qt源,并动态构建qsqlmysql,但是我的代码无法加载mysql qt驱动。错误如下,

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers:()

我的代码如下,

db = QSqlDatabase::addDatabase("QMYSQL", "*****");
db.setHostName("*****");
db.setDatabaseName("*****");
db.setUserName("*****");
db.setPassword("*****");

当我在注册表中搜索“QMYSQL”时,我什么都没得到,似乎qmysql驱动程序没有注册。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

默认配置只会为您提供sqlite支持,也许在Windows上会自动检测ODBC。您需要指定sql支持,并且可能还提供libs和包含路径。例如(使用mardiadbclient for mysql):

Pre Qt 5.8:

  

-qt-sql-mysql -L E:\ msys64 \ mingw64 \ lib -l mysqlclient -I E:\ msys64 \ mingw64 \ include \ mariadb

发布Qt 5.8:

  

-sql-mysql MYSQL_INCDIR = E:\ msys64 \ mingw64 \ include \ mariadb MYSQL_LIBDIR = E:\ msys64 \ mingw64 \ lib MYSQL_LIBS =" -l mysqlclient" -L   E:\ msys64 \ mingw64 \ lib中

答案 1 :(得分:0)

在qt4.8.4中,当你静态链接qsqlmysql时,你应该写:     Q_IMPORT_PLUGIN(qsqlmysql) 但在qt5.3.1中,名称发生了变化,您应该按如下方式编写宏:     Q_IMPORT_PLUGIN(QMYSQLDriverPlugin)

这就是为什么我总是得到一个未解决的外部......错误。更改名称后,我可以成功链接mysql。