sqlite .netframework4.8.1 返回

SqlSugar 沟通中
27 463
该叫什么 91 发布于2周前
悬赏:0 飞吻

database is locked  我加了

  await SqlSugarDb

      .Db.CopyNew()

      .Insertable(res)

      .MySqlIgnore()

      .ExecuteCommandAsync();


但是还是会出现锁库 是为什么 

热忱回答27

  • 91 91 VIP0
    2周前

    后续 我添加了:Journal Mode=WAL;Synchronous=Normal;Cache Size=5000;Page Size=4096;Version=3;        就好了很多

    0 回复
  • 并发过高了吧。如果是警告是正常的。如果是异常提供具体测试用例

    0 回复
  • 91 91 VIP0
    2周前

    @fate sta:还有个问题  大佬   

    abort at 23 in [INSERT INTO `FollowerTable` 

               (`CanDm`,`Country`,`DataGroupId`,`Description`,`FollowersCount`,`FollowingCount`,`HomeUrl`,`Is_blue_verified`,`MediaCount`,`Name`,`RestId`,`ScreenName`)

    sqlite 出现这种 是什么意思   我是批量并发 不能加MySqlIgnore 

    0 回复
  • @91:警告是正常的framework sqlite驱动就这样,如果异常就是代码并发过高。

    0 回复
  • 把问题描述清楚是警告还是异常,还有有问题提供DEMO

    0 回复
  • 91 91 VIP0
    2周前

    @fate sta:不是警告 你的197预览版本  sqlite    insert 加了MySqlIgnore    但是批量并发你没有加MySqlIgnore  就会导致 插入不进去 库里已经有数据了 我又设置了唯一键

    0 回复
  • 91 91 VIP0
    2周前
    0 回复
  • 没听懂。批量插入也支持Ignore的。

    image.png

    0 回复
  • 91 91 VIP0
    2周前

    @fate sta:那你试试 

       await SqlSugarDb

           .Db.Fastest<FollowerTable>()

           

           .BulkCopyAsync(dislist);

    0 回复
  • 91 91 VIP0
    1周前

    @fate sta:大佬 你试试这个 

    那你试试 

       await SqlSugarDb

           .Db.Fastest<FollowerTable>()

           

           .BulkCopyAsync(dislist);

     是不是都没加MysqlIgnore

    0 回复
  • @91:这个方法没有这个功能。

    0 回复
  • 91 91 VIP0
    1周前

    @fate sta:那我大批量添加  怎么能去重呢 老板     比如我大批量添加了30W数据   我分了两批        第一批15W 我可以在内存去重 这个没问题 插入 然后第二批我插入15W  那么万一第一批和第二批都有重复的  那就插入不进去了

    0 回复
  • 直接插入30万不行吗

    0 回复
  • 91 91 VIP0
    1周前

    @fate sta:那要是100W呢   大概几百万的数据吧 一次性上传 老大

    0 回复
  • SqlSugar 5.1.4.198-preview03

       db.Fastest<Student>().IgnoreInsertError().BulkCopy(list);

    已支持

    0 回复
  • 91 91 VIP0
    1周前

    @fate sta:预览版本  .netframework  sqlite     IgnoreInsertError使用的是 REPLACE  INTO       为什么不使用INSERT OR IGNORE呢    replace into是先删除在更新  而insert orignore是忽略插入 是不是性能会更好些呢 老大

    0 回复
  • 91 91 VIP0
    1周前

    @fate sta:预览版本  .netframework  sqlite     IgnoreInsertError使用的是 REPLACE  INTO       为什么不使用INSERT OR IGNORE呢    replace into是先删除在更新  而insert orignore是忽略插入 是不是性能会更好些呢 也跟符合语义  老大

    0 回复
  • @91:sqlite只有 replace 语法吧

    0 回复
  • 实在不行手动加锁吧 海量数据写入 SQLITE并不适合这种长时间的写入多线程

    0 回复
  • 91 91 VIP0
    1周前

    @fate sta:有的老大 image.pngimage.png  改下就成  一个是忽略插入 一个是删除更新

    0 回复
  • 91 91 VIP0
    1周前

    还行 我sqlite一天写个几千万数据都可以的 只是想在优化下

    @fate sta

    0 回复
  • 91 91 VIP0
    1周前

    @fate staimage.png大批量数据也整下 好几个数据库都支持这种写法的      删除更新 忽略插入 可以搞两个方法

    0 回复
  • SqlSugar 5.1.4.198-preview09


    0 回复
  • replace 改成了 ignore

    0 回复
  • 91 91 VIP0
    1周前

    @fate staimage.png老大  你少打了个Into 现在会报错 near "`FollowerTable`": syntax error in "INSERT OR IGNORE `FollowerTable`  (`

    0 回复
  • SqlSugar 5.1.4.198-preview10


    0 回复
  • 91 91 VIP0
    1周前

    @fate sta:没问题了

    0 回复