![]() |
1
294
在windows中,您可以尝试此程序 http://www.nirsoft.net/utils/opened_files_view.html
只要停止这个过程。。。 …您的数据库将被解锁。 |
![]() |
2
94
我在写入过程中崩溃了一个应用程序,导致我的sqlite db被锁定。下面是我如何修复它的:
|
![]() |
3
53
DatabaseIsLocked 页面提供了此错误消息的解释。它部分声明争用源是内部的(对于发出错误的进程)。本页没有解释SQLite是如何决定流程中的某些内容持有锁的,以及哪些条件可能导致误报。 v3中引入了与文件锁定相关的更改,可能对未来的读者有用,可以在以下位置找到: File Locking And Concurrency In SQLite Version 3 |
![]() |
4
33
删除日志文件听起来是个糟糕的主意。它允许sqlite在崩溃后将数据库回滚到一致状态。如果在数据库处于不一致状态时将其删除,则会留下损坏的数据库。引用《圣经》中的一页 sqlite site :
我无法解释为什么删除日志文件会让您锁定以前无法锁定的数据库。这是可复制的吗? 顺便说一句,日志文件的存在并不一定意味着发生了崩溃或需要回滚更改。Sqlite有几种不同的日志模式,在“持久”或“截断”模式下,它始终保留-journal文件,并更改内容以指示是否有要回滚的部分事务。 |
![]() |
5
30
|
![]() |
6
14
如果一个进程在SQLite数据库上有一个锁并崩溃,那么该数据库将保持永久锁定。这就是问题所在。并不是其他进程有锁。 |
![]() |
7
13
|
![]() |
8
12
使用一个linux shell,它将是。。。
|
![]() |
9
11
上面建议的恢复方法对我不起作用(包括先移动然后再复制数据库的想法)。但在将其复制到非NFS系统后,数据库变得可用,而不是数据丢失。 |
![]() |
10
7
我补充说“
|
![]() |
11
4
我找到了 documentation |
![]() |
12
4
如果文件位于远程文件夹(如共享文件夹)中,则可能引发此错误。我把数据库改为本地目录,它工作得很好。 |
![]() |
13
3
我在应用程序中遇到了这样的问题,它通过两个连接访问SQLite——一个是只读的,另一个是写和读。看起来只读连接阻止了第二个连接的写入。最后,事实证明,需要在使用后立即完成或至少重置准备好的语句。在打开prepared语句之前,它导致数据库被阻止写入。
或
|
![]() |
14
3
如果您得到一个不同的校验和,那么数据库正在被写入,并且您真的不想终止-9这个进程,因为如果这样做,很容易导致表/数据库损坏。 我要重申,因为这很重要-解决方案不是找到并杀死锁定程序-而是找到数据库是否有写锁的原因,并从那里开始。有时候,正确的解决办法就是休息一下喝杯咖啡。
创建此锁定但未写入的情况的唯一方法是程序是否运行
最后,文件中不存在“锁定”状态,正如几个答案所述——它驻留在操作系统的内核中。运行的进程
|
![]() |
15
2
我也遇到了类似的情况——我的web应用程序能够读取数据库,但无法执行任何插入或更新。Apache的重新启动至少暂时解决了这个问题。
|
![]() |
16
2
lsof
|
![]() |
17
2
这个链接解决了这个问题 When Sqlite gives : Database locked error 它解决了我的问题,可能对你有用。 并且您可以使用BeginTransaction和EndTransaction来避免将来锁定数据库。 |
![]() |
18
2
|
![]() |
19
1
|
![]() |
20
1
我只是犯了同样的错误。 在谷歌搜索了5次地雷后,我发现我没有关闭一个正在使用db的炮弹。 只需关闭它,然后重试;) |
![]() |
21
1
我也有同样的问题。显然,rollback函数似乎用与db文件相同但没有最新更改的日志覆盖db文件。我在下面的代码中实现了这一点,从那时起,它一直工作得很好,而在以前,由于数据库一直处于锁定状态,我的代码只会卡在循环中。
我的python代码
|
![]() |
22
1
出现此异常的一个常见原因是,当您尝试执行写入操作时,仍保留用于读取操作的资源。例如,如果从表中选择,然后尝试更新所选内容,而不首先关闭结果集。 |
![]() |
23
1
SQLITE_BUSY 结果代码,我用设置解决了它 sqlite3_busy_timeout 长到三万左右。 (顺便说一句,奇怪的是,在一个7年前的问题上,还没有人发现这一点!SQLite真的是一个奇特而神奇的项目……) |
![]() |
24
1
在使用重新启动选项之前,有必要先看看是否可以找到sqlite数据库的用户。
就我而言,我得到了以下回应:
|
![]() |
25
1
this point 请参阅SQLite常见问题解答,并查看安装配置选项,以确保避免锁定,如所述 here :
|
![]() |
26
1
我在一个与这里描述的稍有不同的场景中得到了这个错误。
太空情况得到处理后,一切恢复正常。 |
![]() |
27
1
如果您试图解锁 Chrome数据库 view it with SQLite ,然后关闭Chrome。 窗户
|
![]() |
28
1
|
![]() |
29
0
这可能意味着您已打开和(独占?)事务,但尚未提交数据。您的程序或其他过程是否将-日志留下了?? 重新启动sqlite进程将查看日志文件,清除所有未提交的操作并删除-journal文件。 |
![]() |
30
0
关闭您所在的终端(在OSX上)可能会起作用。重新启动将起作用。您可以查找(例如)没有做任何事情的“python”进程,并杀死它们。 |
![]() |
baronsec · SQL遍历表以查找子字符串 2 年前 |
![]() |
Guillaume · 使用操作从Python列表创建numpy数组 2 年前 |
![]() |
EJ Travel · 如何使用Kotlin中的Room管理登录验证? 3 年前 |
![]() |
Ken · SQL计数或最大值(sqlite) 3 年前 |
![]() |
Eric · Python Crontab无法读取Sqlite3表 3 年前 |