Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > SQLite и The database file is locked.


Автор: Zlo 2.5.2013, 22:02
Для начала опишу ситуацию:
Имеется программа (моя) которая загружается под каждым пользователем (допустим на терминальном сервере, для каждого пользователя запускается своя копия приложения) и постоянно собирает некую инфу.
На том же терминальном сервере крутится сервис опять же мой. Программа получая инфу отправляет ее сервису. Сервис получив информацию запихивает ее в БД (SQLite).
Через некоторое время сервис забирает инфу из БД запихивает ее в xml и отправляет скрипту на сайте для дальнейшей обработки.

Как было до этого:
Каждая копия программы подключалась к БД и писала в нее инфу. Сервис через некоторое время забирал инфу, запихивал ее в xml и...
Но было слишком много ошибок типа "The database file is locked." поэтому немного погуглив прочитал что SQLite не позволяет писать в БД одновременно из разных потоков-следовательно запись в БД возложил на сервис.

НО ошибка "The database file is locked." попрежнему появляется хоть и не так часто.
гуглив наткнулся на несколько статей на хабре:
_http://habrahabr.ru/post/149635/
_http://habrahabr.ru/post/149356/
где вроде говорится что писать одновременно в БД все таки можно, но как это реализовать?
и если так сделать нельзя то нужно наверное делать менеджер записи в БД, если кто-то уже делал, то может поделится кодом, а то городить велосипед не очень хочется...


Автор: DYUMON 6.5.2013, 09:45
на сколько помню . та dll что по умолчанию скачивается на сайте sqlite.org не  поддерживает многопоточный доступ. собери себе dll с необходимыми параметрами.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)