在我的服务器应用程序(用c#编写)中,多个请求同时发生,服务器在sqlite db上执行读写操作。
现在问题是当服务器尝试在其他一些请求时向数据库插入任何内容时,从数据库读取然后transaction.Commit()
抛出异常database is locked
,但是{{ 1}}正在成功执行。所以问题只在于提交数据库。
我们在每次插入和更新查询后提交。只提交一次(将数据库保留在内存中并在应用程序关闭时提交)可以避免这个问题吗?还是有其他方法来处理这种情况。
答案 0 :(得分:1)
您似乎需要实现Busy Callback或Busy Timeout,sql lite必须在您编写时锁定整个数据库:
多个进程可以同时打开同一个数据库。多个进程可以同时执行SELECT。但是,只有一个进程可以随时对数据库进行更改。