LINUX.ORG.RU

sqlite

 


0

1

Не могу найти, подскажите, безопасно ли использовать эту БД для одновременной записи из разных процессов? Там какая-то блокировка существует файла с базой при записи?

★★

безопасно ли использовать эту БД для одновременной записи из разных процессов?

Can multiple applications or multiple instances of the same application access a single database file at the same time?

Как раз твой вопрос, ответ по ссылке: http://www.sqlite.org/faq.html#q5 . В двух словах: блокировки есть, но поведение по умолчанию — сразу возвращать SQLITE_BUSY, если база занята, а не ждать, пока освободится. Это забота твоей программы.

i-rinat ★★★★★
()
Ответ на: комментарий от LinuxUser

Проверяешь коды ошибок. Если получил SQLITE_BUSY, перезапускаешь заново.

http://www.sqlite.org/c3ref/step.html

SQLITE_BUSY means that the database engine was unable to acquire the database locks it needs to do its job. If the statement is a COMMIT or occurs outside of an explicit transaction, then you can retry the statement. If the statement is not a COMMIT and occurs within an explicit transaction then you should rollback the transaction before continuing.

i-rinat ★★★★★
()
Ответ на: комментарий от LinuxUser

И да, если пишущих много, то надо смотреть в сторону обычных БД.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

А что если завести специальный файл и лочить его перед тем как писать в базу и разлочивать после записи? Если все процессы, которые пишут в базу, так будут делать, то они встанут в очередь и не надо будет несколько раз дёргать sqlite3_step().

LinuxUser ★★★
()
Ответ на: комментарий от LinuxUser

А что если завести специальный файл и лочить его перед тем как писать в базу и разлочивать после записи?

Почему бы и нет?

i-rinat ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.