ibireme/YYCache

YYKVStorage init error: fail to open sqlite db,请问如何解决

MrCaiWH opened this issue · 10 comments

2018-01-25 16:13:45.808 iKaoYan[27454:405585] -[YYKVStorage _dbExecute:] line:166 sqlite exec error (5): database is locked
2018-01-25 16:13:45.816 iKaoYan[27454:405625] -[YYKVStorage _dbExecute:] line:166 sqlite exec error (5): database is locked
2018-01-25 16:13:45.816 iKaoYan[27454:405585] -[YYKVStorage _dbExecute:] line:166 sqlite exec error (5): database is locked
2018-01-25 16:13:45.817 iKaoYan[27454:405585] YYKVStorage init error: fail to open sqlite db.

我也遇到了同样的问题,请问你是怎么解决的

@xiaoerlong 没解决,不用了,换别的方式了

@MrCaiWH 我发现问题了,我是有几个子线程同时访问就会这样

一个线程访问也会报错

遇到同样的问题-_- 初始化db就报错了。。

@Chengruihh 你看一下是不是有多个线程访问

@xiaoerlong 貌似没有,只是在登录成功后保存了一下信息,还没有进入后面的逻辑。而且是很偶尔的会出现,大部分时候不出现。

YYKVStorage里面说明了,这个class不是thread safe的

并没有人直接使用 YYKVStorage,都是直接使用的 YYCache。但是 YYDiskCache 封装了 YYKVStorage,任然是会报上面的错误!

多线程同时操作同一张表引起,尝试自己加一个全局锁试一下 https://www.jianshu.com/p/6422ae4e06c2