Firefox 锁定 place.sqlite
平台:Firefox 3.6.13、Python 2.7 stackless 和 Windows 7(尚未在 Ubuntu 上进行测试,我会...)
我尝试使用 apsw 库:
conn = apsw.Connection( dir + profile + '/places.sqlite', apsw.SQLITE_OPEN_READONLY )
但出现错误:
文件“c:\apsw\src\statementcache.c”, sqlite3_prepare 中的第 386 行 apsw.BusyError:BusyError:数据库是 已锁定
我看到“SQLite 管理器”也可以在 Firefox 运行时打开数据库。
我只想打开并阅读,我认为操作无故障。而且我无法使用“SQLite 管理器”。我需要编写我的 Python(或 PHP 或 Perl)脚本。
1) Firefox 对 SQLite 文件使用哪种类型的锁?为什么?
2)“SQLite管理器”如何工作?
Q2) SQLite Manager 在 Firefox 中以 JavaScript 运行,因此它可以访问数据库。
这不是我想要的:在 Firefox 运行时读取位置的外部应用程序。
Platform: Firefox 3.6.13, Python 2.7 stackless, and Windows 7 (not yet tested on Ubuntu, I will...)
I tried with the apsw library:
conn = apsw.Connection( dir + profile + '/places.sqlite', apsw.SQLITE_OPEN_READONLY )
And I got the error:
File "c:\apsw\src\statementcache.c",
line 386, in sqlite3_prepare
apsw.BusyError: BusyError: database is
locked
I see "SQLite manager" can open the database also with Firefox running.
I just want to open and read, I think a trouble free operation. And I cannot use "SQLite manager". I need to code my Python (or PHP or Perl) script.
1) Which type of lock does Firefox use on the SQLite file? Why?
2) How does "SQLite manager" work?
Q2) SQLite Manager works in JavaScript, inside Firefox, so it can access the database.
This is not what I am looking for: An external application reading places while Firefox is running.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我不确定 Firefox 使用的锁定类型,但我建议这样做:
将 Firefox 数据库文件复制到另一个临时位置并从那里读取它(这也降低了意外损坏原始文件的风险)。
我在 Firefox 3.* 上使用此方法还没有遇到问题。
I am not sure about the lock type Firefox uses, but I'd recommend this:
Copy the Firefox database file to a different temporary location and read it from there (this also lowers the risk of accidentally damaging the original file).
I haven't had problems with this method yet on Firefox 3.*.
Firefox 使用 SQLite 来获取数据库的独占锁,这就是你无法打开它的原因:
https://www.sqlite.org/pragma.html#pragma_locking_mode
Firefox uses SQLite to obtain an EXCLUSIVE lock on the database, which is why you cannot open it:
https://www.sqlite.org/pragma.html#pragma_locking_mode