在使用SQLite3数据库时,即使在Insert时提示"database is locked in ..."也能成功写入 返回

求助
6 286
该叫什么 fn 发布于2019/6/14
悬赏:5 飞吻

基于 SQLite 本身的文件数据库设计,按理说是不能同时多处进行 Insert/Update/Select 操作的。

可是我开了3个 Task 来分别执行 Insert/Update/Select 操作时,虽然大量的提示"database is locked in ..."确不影响最终效果。

预计插入 500 条数据,实际上也确实插入了 500 条数据,即使执行过程中在“调试”窗口报了 SQLite error 错误。

那么这是为何?是 SqlSugar 本身的机制?还是 SQLite 的原因?


* 每个方法内都会重新实例化一个新的数据库连接。

图片.png

其他方法也都类似于这样

图片.png

这是调试窗口报出的错误信息

图片.png


热忱回答6

  • 百度应该有你要的答案

    0 回复
  • Sqlsugar 只是掉驱动方法

    0 回复
  • fn fn VIP0
    2019/6/14

    @fate stay night:就是比较奇怪的是,我之前也有用过其他ORM(FluentData)来操作SQLite数据库,它会直接抛出异常并停止当前操作,无论是Insert还是Update,最终结果并不会到数据库中。


    而这个SqlSugar就是...虽然我这里报错了,但是我还是给你执行完成了.......

    如问题所示,我插入了500条数据,即使中间出错了4次以上,但最终还是插入了完整的500条数据。


    这个地方比较就比较迷了。。

    0 回复
  • fn fn VIP0
    2019/6/14

    @fn:我刚看了下源码,似乎在AdoProvider抛出的异常会被Method处理掉(catch{ return false;} ),也许是因为原先我使用另一个ORM的时候没有处理掉异常,我再试试看。

    0 回复
  • 应该和驱动的版本有关系,

    0 回复
  • John John VIP0
    2019/6/14

    加油 哈哈哈哈

    0 回复

版块

学习文档

最新会员

发布达人

回贴达人