我使用的其中一个 Web 应用抱怨无法使用localStorage
。为了测试这是否正确,我打开了 devtools 并尝试执行localStorage.setItem('testkey', 'testval')
。我收到以下错误:
[Exception... "SQLite encountered an IO error" nsresult: "0x80630002 (NS_ERROR_STORAGE_IOERR)" location: "JS frame :: debugger eval code :: <TOP_LEVEL> :: line 1" data: no] debugger eval code:1:14
一种可能性是该网站的存储配额已耗尽,因此我在其他域(google、stackexchange)上尝试了同样的操作,但出现了同样的错误。
我怀疑这可能与最近的更新有关(我在 Ubuntu 16 上使用的是 Firefox 稳定版 72.0.1)。这似乎是在 Firefox 打开一段时间后发生的,重新启动可以解决问题(现在已经发生了两次)。
谁能解释一下可能发生的情况以及如何解决?
这些是https://firefox-storage-test.glitch.me:
本地存储
错误:我们的测试逻辑被破坏了,请复制并粘贴下面“调试信息”的内容以及 devtools 控制台中的任何内容并发送至:asuth。(unexpectedBreakage)
配额管理器
好:完全正常工作。(fully Operational)
索引数据库
好:完全正常工作。(fully Operational)
缓存 API
好:完全正常工作。(fully Operational)
答案1
我今天遇到了同样的问题,它是由文件系统损坏、磁盘问题或 sqlite 数据库中的 db 损坏引起的。
- 停止 Firefox
- 检查您的系统以确保您没有任何真正的磁盘错误。
- 从您的 Firefox 配置文件目录中删除
webappstore.sqlite-shm
和webappstore.sqlite-wal
(这些是主数据库文件的临时缓存)。 按照如下方式检查 db 文件的完整性(您需要安装 sqlite 才能执行此操作)。如果看到,
ok
请尝试重新启动 Firefox - 否则您将看到此错误:sqlite3 数据库名称.sqlite
pragma integrity_check; 磁盘 i/o 错误;
复制
webappstore.sqlite
到新位置,删除原始位置,然后将其复制回来。重复步骤 4。- 如果您现在看到
ok
,请启动 Firefox。 - 如果仍然有错误,您只需删除
webappstore.sqlite
- Firefox 将创建一个新的,但您将丢失其他应用程序的本地存储设置。
您可能需要对其他数据库文件重复这些步骤,具体取决于错误所在的位置。