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