【发布时间】:2014-10-02 07:52:21
【问题描述】:
在我的应用程序中,我使用 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
【问题讨论】:
-
打开失败后,尝试调用mDB->lastError()->databaseText()获取并查看错误信息
-
奇怪的是它没有发出信号
failedToOpen -
获取代码中 if (!mDB.open()) 后面的错误信息
-
@N1ghtLight 我得到“内存不足”异常。这怎么可能发生?我只有两张表,开头没有任何条目。
-
Niklas,搜索引擎应该是你最好的朋友...stackoverflow.com/a/18325616/2266412
标签: mysql macos qt macdeployqt