Russian Qt Forum

Qt => Базы данных => Тема начата: Примерный ученик от Ноябрь 08, 2013, 14:43



Название: Переключить SQLite в режим журналирования WAL
Отправлено: Примерный ученик от Ноябрь 08, 2013, 14:43
QT4.6 SQLite 3.

PRAGMA journal_mode = WAL

не срабатывает.
Что надо сделать?


Название: Re: Переключить SQLite в режим журналирования WAL
Отправлено: LisandreL от Ноябрь 09, 2013, 16:39
http://master.qt-project.org/archive/qt/4.6/qt-everywhere-opensource-src-4.6.4.zip
Qt 4.6.4 => SQLite version 3.6.19.

http://sqlite.org/pragma.html#pragma_journal_mode
Цитировать
A database in WAL journaling mode can only be accessed by SQLite version 3.7.0 or later.

Так что либо версию Qt брать новее, или плагин SQLite пересобирать с более свежей версией или забить на WAL.


Название: Re: Переключить SQLite в режим журналирования WAL
Отправлено: Примерный ученик от Ноябрь 09, 2013, 17:12
спасибо. Гляну в эту сторону


Название: Re: Переключить SQLite в режим журналирования WAL
Отправлено: Примерный ученик от Ноябрь 13, 2013, 09:56
А как узнать версию SQLite с которой собран драйвер?


Название: Re: Переключить SQLite в режим журналирования WAL
Отправлено: Примерный ученик от Ноябрь 13, 2013, 11:13
И еще вопрос:

из под SQLite Administrator

Код:
pragma journal_mode = TRUNCATE

выполняется успешно, то из программы

Код:
sql.exec("PRAGMA journal_mode = TRUNCATE")

не срабатывает ???


Название: Re: Переключить SQLite в режим журналирования WAL
Отправлено: Примерный ученик от Ноябрь 14, 2013, 09:36
#define SQLITE_VERSION        "3.6.19"

это из QT4.7.4 для VC2008.
Но никак не переключается, только вариант delete и все ???


Название: Re: Переключить SQLite в режим журналирования WAL
Отправлено: Примерный ученик от Ноябрь 14, 2013, 09:44
Код:
  /*
  **  PRAGMA [database.]journal_mode
  **  PRAGMA [database.]journal_mode = (delete|persist|off|truncate|memory)
  */
  if( sqlite3StrICmp(zLeft,"journal_mode")==0 ){
    int eMode;
    static char * const azModeName[] = {
      "delete", "persist", "off", "truncate", "memory"
    };

Похоже, нет режима WAL в этом драйвере


Название: Re: Переключить SQLite в режим журналирования WAL
Отправлено: Примерный ученик от Ноябрь 14, 2013, 10:28
в 4.8.5 уже нормальная версия драйвера с поддержкой WAL.
Буду пробовать.


Название: Re: Переключить SQLite в режим журналирования WAL
Отправлено: Alex Custov от Ноябрь 14, 2013, 13:37
Похоже, нет режима WAL в этом драйвере

Тебе же написали, что он добавлен начиная с версии 3.7, а у тебя 3.6


Название: Re: Переключить SQLite в режим журналирования WAL
Отправлено: Примерный ученик от Ноябрь 14, 2013, 15:50
я это понял. Но не происходит и переключения на допустимые варианты, кроме режима delete.
С эти как бороться?