首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在只读数据库上获取SQLITE_BUSY是正常的吗?

在只读数据库上获取SQLITE_BUSY是正常的吗?
EN

Stack Overflow用户
提问于 2010-05-21 07:26:38
回答 1查看 668关注 0票数 2

我有2个进程:1个是写入sqlite数据库,1个是从同一个数据库读取。偶尔,我会在我的selects中获得SQLITE_BUSY。这是正常的吗?有没有什么办法可以让我打开数据库,这样它就会阻塞,直到完成查询?(我在open调用上尝试了FULLMUTEX选项,但似乎没有效果)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-21 09:04:19

当SQLite需要写入时,它会锁定整个数据库,这样其他线程/进程就无法对其进行读写。这就是为什么你的另一个进程会得到SQLITE_BUSY。因此,如果您需要同时有多个线程/进程使用数据库,那么SQLite并不是很好。如果您只有两个进程,那么您可能不会受到影响。

关于问题的第二部分,您可以使用sqlite3_busy_timeout函数告诉SQLite重试,如下所示:

代码语言:javascript
复制
sqlite3_busy_timeout(db, 100);  /* Retry for up to 100 ms */
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2878593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档