我遇到了一个关于sqlite3的奇怪问题。我使用open()方法获得了相同数据库文件的不同连接。连接1开始一个事务,连接2开始另一个事务,即更新表的几个记录。然后连接1提交事务,然后连接2提交其事务。但我发现连接2的更新命令实际上永远不会更新数据库中的记录。在此过程中没有异常抛出。我不知道为什么会出现问题。谁能向我解释原因?
答案 0 :(得分:14)
如果您阅读了SQLite文档,您将看到它支持多个连接以进行只读,您无法从多个连接写入数据库,因为它不是为此设计的。
答案 1 :(得分:5)
除非您使用BEGIN IMMEDIATE启动事务,否则您将面临必须回滚并重试它们的风险。 BEGIN不做任何锁定;后续UPDATE或INSERT获取锁定,您需要检查结果代码以查看它们是否失败。请参阅transactions上的此页面以及locks上的此页面。