sqlite3 如何解决数据库锁定问题

sqlite3 如何解决数据库锁定问题,第1张

新手,写了个程序用到服务器,就搭了个本地的服务器,用到sqlite3 数据库,现在遇到了个问题,客户端第一次执行程序的时候没问题,但是关闭程序后在运行的时候就没办法插入数据了,提示是-数据库锁定,

sqlite查询过快导致数据库锁住

原因:更新写的时候需要排他锁。但是查询语句有些东西没有正常释放,导致共享锁一直未正常释放,排他锁得不到满足。几经测试,终于发现,是ExecuteReader这个函数在作怪,这个函数返回的是一个SQLiteDataReader对象,如果使用的时候和上面的代码一样只是read就完了,没有去关闭,这个共享锁仍旧存在。

解决方案:

执行完毕释放一下即可。

多线程是很容易造成死锁,一般情况下死锁都是因为并发 *** 作引起的。我不懂JAVA,但死锁这个问题每种开发工具和数据库都会碰到.解决办法是:

1、程序方面优化算法(如有序资源分配法、银行算法等),在一个程序里,能不用多线程更新同一张数据库表 尽量不要用,如果要用,其避免死锁的算法就很复杂。

2、数据库方面设置等待超时时间

3、发生死锁后直接KILL掉数据库进程


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9900180.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存