Ошибка SQL (Qt4)

Модератор: Модераторы разделов

Аватара пользователя
Assuri
Сообщения: 678
Статус: #include <brain.h>
ОС: Fedora 12

Ошибка SQL

Сообщение Assuri »

Здраствуйте.

Пишу программу с использованием Qt4 и модуля QtSql, но возникла проблема. У меня есть класс:

Код:

class DatabaseCenter : public QSqlDatabase { public: DatabaseCenter(const QSqlDatabase& database); private: QSqlQuery *query; }; DatabaseCenter::DatabaseCenter(const QSqlDatabase& database) : QSqlDatabase(database) { setHostName("localhost"); setUserName("MyUserName"); setPassword("IMP"); query = new QSqlQuery(*this); } bool DatabaseCenter::setDatabasePath(const QString& path) { qDebug() << "[DatabaseCenter] Database path became " << path; QDir::setCurrent(QFileInfo(path).absolutePath()); setDatabaseName(QFileInfo(path).fileName()); if (open()) { qDebug() << "[DatabaseCenter] Database was opened"; query->exec(QString("CREATE TABLE IF NOT EXISTS main(`word` TEXT NOT NULL,`translation` TEXT NOT NULL,`status` INTEGER(1) NOT NULL, UNIQUE (`word`))")); if (!query->isValid()) qDebug() << "[DatabaseCenter] Cannot create table, because: " << query->lastError().text(); return true; } qDebug() << "[DatabaseCenter] Database wasn't opened, because: " << lastError().text(); return false; }


Когда я вызываю функцию setDatabasePath() БД создаётся и открывается как надо, но вот запрос создания таблицы не работает. Вот Debug сообщения:
[DatabaseCenter] Database path became "/home/assuri/.LilEditor/tikser.en-ru"
[DatabaseCenter] Database was opened
[DatabaseCenter] Cannot create table, because: "out of memory Unable to execute statement"

Честно говоря я даже и не знаю что может означать данная ошибка, поэтому прошу помощи. Спасибо.
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Ошибка SQL

Сообщение NickLion »

А что за СУБД? Пробовали другую?
Спасибо сказали:
Аватара пользователя
Assuri
Сообщения: 678
Статус: #include <brain.h>
ОС: Fedora 12

Re: Ошибка SQL

Сообщение Assuri »

NickLion писал(а):
12.11.2008 18:04
А что за СУБД? Пробовали другую?

SQLite. Нет, не пробовал, так как необходимо использование только SQLite.
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Ошибка SQL

Сообщение NickLion »

Мне кажется проблема в СУБД. Нормально ли выполняется этот запрос в каком-нубудь родном клиенте (я просто с SQLite не сталкивался)?
PS а какая версия? посмотрел - там не все версии поддерживают синтаксис IF NOT EXISTS
PPS все же, почему говрит именно о нехватке памяти - не понимаю
Спасибо сказали: