2 zoojingoo ZooJinGoo 于 2016.04.28 01:36 提问

sqlite3 database is locked问题
c++

sqlite3的c++ API接口使用好好的,就是重复调用sqlite3_prepare()会出现死锁问题,我自己写了个操作sqlite的类,叫Datebase。其他函数都好,但是只要第二次调用下面这个函数中的代码就会出现database is locked的错误。
图片图片

2个回答

devmiao
devmiao   Ds   Rxr 2016.04.28 06:41
CSDNXIAOS
CSDNXIAOS   2016.04.28 01:41

这个问题看着比较简单,就是数据库被锁住了,那我是怎么做的才导致这个原因呢。
我回忆一下之前所做的操作,
1,因为某种其他的原因我打开了SQLite3数据库
2,然后觉得可能是数据插入异常,所以我把数据库里的数据删了
3,然后再登陆数据就报了这个异常。(user.save方法调用)

由于近期只操作了这些关于数据库的操作,那会不会是这个原因导致的呢。
真正原因:
(2014/......
答案就在这里:SQLite3::BusyException: database is locked:
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
解决sqlite死锁示例异常database is locked
/* * sqlite的连接方式实际上为单连接方式,即使实用多线程也是用的一个连接 * getWritableDatabase()和getReadableDatabase()都为synchronized方法,但不是static方法 * 所以都只对同一个对象起同步作用,对于不同的对象没有任何作用 * 所以使用sqlite的时候可以提供一个单一的入口,防止多对象修改数据库而造成死锁 * 所以
sqlite3 database is locked 问题解决方案
sqlite3 database is locked 问题解决方案 sqlite3只支持一写多读. 读与读可以同时进行 读与写不可同时进行 写与写不可同时进行 解决方案1这个问题可以用线程间的同步方案来解决.同步方案的话有多种,但读写锁最适合这个问题. 这个问题和读写锁不谋而合,所以可以用读写锁来解决这个问题. 当然也可以用其他线程间同步方案来解决. 针对读写锁,请参阅线程与读写锁解决方
Sqlite3 database file is locked 解决办法 与sqlite_reset()
有几天没有更新博文了,这几天参加公司的年会,泡温泉,滑雪,玩得不亦乐乎。作为年会后的第一个工作日,自己终于完成了持续多日的sqlite3数据库测试并解决其中的一个问题,就是database file is locked。 在我们的产品中,我们会new出一个database对象,然后调用open方法打开指定路径下的数据库,如果没有这个数据库,就会自动给用户创建一个。这也是sqlite3 db.sq
关于SQLite3 Database is Locked 的一点处理技巧
关于SQLite3 Database is Locked 的一点处理技巧
解决django的sqlite3的database is locked
今天在用admin后台添加一篇博客,最后居然报错:DatabaseError at  ... database is locked, 因为我的数据库使用的是sqlite3,所以不支持大量的访问是有可能的,但是目前仅仅我一个人访问的话,居然报错,我就纳闷了,用google搜索了DatabaseError at  database is locked 和django database is locke
不完全解决sqlite遇到database is locked问题方法
sqlite遇到database is locked问题的完美解决 这两天在项目中用大强度大频率的方法测试时遇到sqlite报database is locked的问题, 分析下来原因是sqlite对数据库做修改操作时会做(文件)锁使得其它进程同一时间使用时会报该错误(也就是SQLITE_BUSY),但如果仅是多进程或多线程查询sqlite是支持的。 解决方法有: 1。
sqlite3解决A table inthe database is locked
昨天写sqlite3数据库插入函数,总是只能插入一条数据,第二次数据插入不了,得到的报错信息是rc = 6,A table inthe database is locked 因为我在插入之前调用了sqlite3_prepare(),被操作的表被SQL 语句编译后的字节码绑定,所以我想应该使用函数sqlite3_finalize()释放分配给字节码的内存空间   sqlite3_finaliz
sqlite遇到database is locked问题的完美解决方案
这两天在项目中用大强度大频率的方法测试时遇到sqlite报database is locked的问题, 分析下来原因是sqlite对数据库做修改操作时会做(文件)锁使得其它进程同一时间使用时会报该错误(也就是SQLITE_BUSY),但如果仅是多进程或多线程查询sqlite是支持的。 解决方法有: 1。使用进程或线程间的同步机制以避免同时操作;如用信号量,互斥锁等(pthread_mutex_
sqlite3.OperationalError: database is locked
ps -ef |grep python turn off all the processes
安卓数据库连接解决办法 ,避免 sqlite3 database is locked
1.说明 android的sqlite3数据库中,好像是因为数据库锁的机制问题,无法对同一个数据库同时进行写操作,所以可能爆出database is locked 的错误; 综合网上资料,觉得用单例模式,全局保持一个连接比较实用; 2.具体代码 首先具体连接数据库的代码如下: public class DataBaseOpenHelper extends android.databa