我在amd64 / ubuntu上使用sqlcipher 2.1.1 / sqlite 3.7.17。
两个进程具有到同一数据库的开放连接。两个进程都可以启动事务,并且事务在进程内被序列化,但可能在两个进程之间同时发生。所有事务都是独占的:[ret = sqlite3_exec(db,“begin exclusive transaction”,NULL,NULL,NULL);]。
我在linux上找到的(而不是在sqlite 3.6.22的Windows上)是这些调用成功并返回SQLITE_OK,即使其他进程之前已经完成相同但尚未发出提交或回滚,即应该对数据库持有独占锁。因此,我在应用程序中的整个数据库锁定策略已经失控。
我遇到的是sqlcipher / sqlite库构建问题吗? 我不了解“独家交易”意味着什么?
感谢您提前提供任何暗示或帮助, Beata L
答案 0 :(得分:0)
如果其他人也在解决我的问题:
我发现将锁定从“unix”更改为“unix-dotfile”似乎会使进程间独占事务处于行为状态。到目前为止,我最好的猜测是,加密扩展是否会干扰默认的“unix”数据库锁定。