【发布时间】:2018-02-21 03:57:43
【问题描述】:
正如标题所说,我已经有这个问题好几天了。我的程序在 QtCreator 的调试模式下运行良好,但是一旦我选择发布模式,我就会遇到 sql driver not loaded 问题(我只在 Windows 10 上运行过)。我相信我的 .pro 文件已正确写入(已写入 QT += sql)。
我已经尽力了:
- windeployqt.exe .
- 将插件自己移动到可执行文件夹中的 sqldrivers 子文件夹中,该文件夹包含 Qt 安装路径提供的所有 sqldrivers,并且还移动到可执行文件夹 Qt5Sql.dll 中
- 我还尝试使用 sqlite 网站提供的 sqlite3.dll 并将其移动到(一一测试)可执行文件夹和 sqldrivers 子文件夹中。
正如我所说,该问题仅发生在部署时,所以我想知道是否应该将某些内容添加到我的 .pro 文件中。 我的 Windows 操作系统上没有安装任何 sql 程序。如果这是我认为的问题,我想知道如何强制我的程序使用 sqldrivers 子文件夹中提供的插件。
错误:
QSqlDatabase: QSQLITE driver not loaded
QSqlDatabase: available drivers:
QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins
QSqlQuery::exec: database not open
编辑:我设法解决了这个问题。这个问题来自我没想到的东西。我正在使用全局变量,其中一个是我的数据库,我通过再次读取错误来意识到这一点,因为似乎数据库是在 main.cpp 的第一行(在#include)之前加载的。所以现在我每次使用它时都在使用打开和关闭数据库。有什么方法可以声明一个全局数据库(一直保持打开状态)?我正在使用它。
【问题讨论】: