sqlite 查询报错

    • 问题:sqlite 如何查询数据库倒数第二条数据
      select * from info where date in (select date as be_date 
      from (select date from info order by mid desc limit 2)
      limit 1,1)
    •  
    • 问题:sqlite database is locked
      原因是sqlite对数据库做修改操作时会做(文件)锁使得其它进程同一时间使用时会报该错误(也就是SQLITE_BUSY),
      但如果仅是多进程或多线程查询sqlite是支持的。也有可能是做sql开启事务查询等发生异常,数据库没有关闭,然后再去打开就锁定了

      解决方法有:
      1、使用进程或线程间的同步机制以避免同时操作;如用信号量,互斥锁等(pthread_mutex_lock,
      pthread_mutex_unlock),如果你的项目工程较大要求较高的话建议用此方法自行封装函数处理同步
      2、使用sqlite提供的两个busy handler函数,但对于一个连接来说,只能有一个busy handle,两个函数会相互影响,设
      置一个的同时会清除另一个,应根据需要来选择
    •  
posted @ 2020-08-11 09:55  瞧七  阅读(330)  评论(0编辑  收藏  举报