没有网站能够在 Firefox 中使用 localStorage,错误“SQLite 遇到 IO 错误”

没有网站能够在 Firefox 中使用 localStorage,错误“SQLite 遇到 IO 错误”

我使用的其中一个 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 损坏引起的。

  1. 停止 Firefox
  2. 检查您的系统以确保您没有任何真正的磁盘错误。
  3. 从您的 Firefox 配置文件目录中删除webappstore.sqlite-shmwebappstore.sqlite-wal(这些是主数据库文件的临时缓存)。
  4. 按照如下方式检查 db 文件的完整性(您需要安装 sqlite 才能执行此操作)。如果看到,ok请尝试重新启动 Firefox - 否则您将看到此错误:

    sqlite3 数据库名称.sqlite

    pragma integrity_check; 磁盘 i/o 错误;

  5. 复制webappstore.sqlite到新位置,删除原始位置,然后将其复制回来。重复步骤 4。

  6. 如果您现在看到ok,请启动 Firefox。
  7. 如果仍然有错误,您只需删除webappstore.sqlite- Firefox 将创建一个新的,但您将丢失其他应用程序的本地存储设置。

您可能需要对其他数据库文件重复这些步骤,具体取决于错误所在的位置。

相关内容