gpt4 book ai didi

mysql - 带有 QSqlDatabase 的 Qt 应用程序在使用 macdeployqt 构建时无法正常工作

转载 作者:行者123 更新时间:2023-11-30 22:56:30 28 4
gpt4 key购买 nike

在我的应用程序中,我使用 QSqlDatabase 来存储一些信息。我确实使用以下命令成功构建了它(即使使用 verbose=3 也没有错误):

macdeployqt AppName.app/ -dmg -qmldir=~/dev/AppName/qml

在此之前我使用端口成功安装了mysql55

sudo port install mysql55

如果我尝试运行我的应用程序,它不会崩溃,但它也不会涉及数据库访问。

这是我打开数据库等的代码:

#include <QSqlQuery>
#include <QSqlDriver>

const QString DATABASE_NAME = "com.company.program.db";

MyClass::MyClass(QObject *parent) : QObject(parent) {
mDB = QSqlDatabase::addDatabase("QSQLITE");

#ifdef Q_OS_LINUX
QString path(QDir::home().path());
path.append(QDir::separator()).append(DATABASE_NAME);
path = QDir::toNativeSeparators(path);
mDB.setDatabaseName(path); // NOTE: We have to store database file into user home folder in Linux
#else
mDB.setDatabaseName(DATABASE_NAME); // NOTE: File exists in the application private folder, in Symbian Qt implementation
#endif

bool notOpened = !mDB.open();

QMessageBox::critical(0, "MyClass", mDB.lastError().databaseText()); // always is 'out of memory'

if (notOpened) emit failedToOpen();
else {
// some initialization
}
}

MyClass::~MyClass() {
mDB.close();
}

有没有人遇到过同样的问题/这个问题的解决方案?

注意:我使用的是 Mac OS X 10.9 和 Qt5.3.2

最佳答案

数据库驱动程序在运行时加载。如果 db-driver 路径不正确,您将不会在编译过程中遇到任何与数据库配置相关的错误。当您在安装了 Qt 的机器上构建时,路径甚至不能不正确。

在 Windows 上,当 exe 无法访问 plugins\sqldrivers 中的文件时,这种情况经常发生。MAC 上是否有类似 Linux 的“strace”之类的东西?如果是,您可以跟踪您的 exe 试图在哪些路径中查找驱动程序插件。

我总是在安装程序中复制整个插件目录并将其部署在可执行文件的根目录中,例如C:\Program Files (x86)\\插件

希望对您有所帮助。

关于mysql - 带有 QSqlDatabase 的 Qt 应用程序在使用 macdeployqt 构建时无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26156459/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com