Что я должен сделать, чтобы обновить данные с одновременным доступом к SQLite 3 - PullRequest
1 голос
/ 28 августа 2009

У меня есть два клиента sqlite для windows одновременно, использующих базу sqlite 3 в сети. Когда кто-то добавляет данные, запись успешно добавляется (в данный момент нет файла журнала). Но другой клиент не видит эту запись, даже когда запускается свежий запрос SELECT, и начинает видеть эту запись этой таблицы после некоторых запросов SELECT из другой таблицы.

Таким образом, вопрос заключается в следующем: существует ли «официальный» способ полного сброса внутренних буферов sqlite для обновления целых данных? Лучше всего было бы отключиться от БД, но, может быть, есть способ сделать это без полного отключения?

1 Ответ

2 голосов
/ 02 сентября 2009

Использование SQLite через общий сетевой ресурс является опасной практикой из-за ошибочных реализаций программного обеспечения для обмена сетевыми файлами на компьютерах под управлением UNIX и Windows (что иногда приводит к сбою механизма блокировки SQLite).

Не удивляйтесь, если ваша база данных будет повреждена таким образом.

Итак, независимо от вашей текущей проблемы, я бы посоветовал вам изменить программное обеспечение, чтобы не использовать сетевой ресурс с SQLite.

Если вы все еще хотите использовать решение для общего сетевого ресурса - я бы предложил добавить Synchronous = Full pragma (или его эквивалент) в строку подключения, которую вы используете, чтобы SQLite сбрасывал все на диск синхронно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...