跳转到内容

数据库错误

有时候,你可能会看见以下错误提示:

这表示数据库出现了错误,建议立刻进行处理。

WonderPen 的文档库内容存储在 SQLite 数据库中,通常来说 SQLite 非常可靠,但如果有多个程序对其进行读写,就有一定概率发生错误。比如你将本地文档库放入了第三方云盘,第三方云盘在同步时发生了冲突,就有可能损坏数据库文件。

遇到这个问题不用紧张,WonderPen 内置并默认开启了数据自动备份功能,数据库损坏不会影响已有的备份文件,你随时可以从备份中恢复数据。

处理数据库错误,通常有以下三种方式。

有时候,这个错误是临时的,退出并重启 WonderPen 就能恢复正常。

如果重启之后仍然报错,请继续尝试下面的方法。

多数情况下,你可以尝试从备份中恢复,这个操作有可能修复数据库。

如上图所示,打开备份与恢复面板,点击最新的备份最右侧的恢复按钮,恢复数据。

如果恢复数据之后,不再有错误提示出现,表示数据库已经恢复正常。

如果仍然有错误提示,请尝试下面的方法。

3️⃣ 删除本地数据库文件,再从备份中恢复

Section titled “3️⃣ 删除本地数据库文件,再从备份中恢复”

如果直接恢复无法修复数据库,则需要先将本地数据库文件删除(或者更保险一些:改名、移动到其他位置),随后再尝试从备份中恢复。

具体步骤如下:

  1. 退出 WonderPen

    删除当前文档库数据库,需要先退出 WonderPen,否则数据库文件可能仍在使用中,删除可能会失败。

  2. 打开文档库文件夹

    打开当前文档库所在的文件夹。文档库文件夹一般是以 .wplibrary 结尾的文件夹。

  3. 删除(或改名、移动)数据库文件

    在文档库文件夹(.wplibrary 文件夹)下,应该能看见一个 data.db 文件。目录结构类似下面这样:

    我的文档库.wplibrary/
    ├── assets/
    ├── backup/
    ├── db/
    ├── data.db  <-- 关注这个文件
    └── ...

    注意,你的文档库目录下可能还会有其他文件,其他文件都不必关注,只需关注那个 data.db 文件。

    如果你的操作隐藏了文件的后缀名,你可能只能看见一个名为 data 的文件。

    接下来,可以删除这个 data.db 文件。当然,保险起见,也可以将这个文件改个名,或者移动到其他地方,以便有需要时再恢复回来。

    如果在这个目录下看到其他以 data 开头的文件,比如 data.db-shmdata.db-wal,可以一起删除(或改名、移动)。

  4. 打开 WonderPen 再次从备份恢复

    接着,请重新打开 WonderPen,并打开这个文档库。此时,文档库应该显示为空。

    最后,请再次从备份恢复,文档库应该就能恢复正常了。

如果仍然遇到问题,请通过 Email 等方式联系我们

一些常见的错误代码:

code含义常见场景
SQLITE_INTERNAL内部逻辑错误SQLite 内部 bug(极少见)
SQLITE_PERM权限错误无法写入数据库文件
SQLITE_ABORT操作被中断事务被手动中止
SQLITE_BUSY数据库被锁定多进程同时写入数据库
SQLITE_LOCKED数据库文件锁冲突同一连接中的锁竞争
SQLITE_NOMEM内存不足系统资源不足
SQLITE_READONLY只读数据库数据库以只读模式打开
SQLITE_IOERRI/O 错误磁盘读写错误
SQLITE_CORRUPT数据库损坏文件损坏、“database disk image is malformed”
SQLITE_NOTFOUND文件未找到数据库或索引丢失
SQLITE_FULL磁盘满写入失败
SQLITE_CANTOPEN无法打开数据库文件路径错误或权限不足
SQLITE_EMPTY数据库为空读取空文件
SQLITE_TOOBIG数据过大插入超长字符串或 blob
SQLITE_NOLFS不支持大文件稀有情况
SQLITE_FORMAT文件格式错误SQLite 版本不兼容
SQLITE_NOTADB非 SQLite 文件打开的文件不是数据库