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

这表示数据库出现了错误,建议立刻进行处理。
发生了什么?
Section titled “发生了什么?”WonderPen 的文档库内容存储在 SQLite 数据库中,通常来说 SQLite 非常可靠,但如果有多个程序对其进行读写,就有一定概率发生错误。比如你将本地文档库放入了第三方云盘,第三方云盘在同步时发生了冲突,就有可能损坏数据库文件。
遇到这个问题不用紧张,WonderPen 内置并默认开启了数据自动备份功能,数据库损坏不会影响已有的备份文件,你随时可以从备份中恢复数据。
处理数据库错误,通常有以下三种方式。
1️⃣ 退出并重启 WonderPen
Section titled “1️⃣ 退出并重启 WonderPen”有时候,这个错误是临时的,退出并重启 WonderPen 就能恢复正常。
如果重启之后仍然报错,请继续尝试下面的方法。
2️⃣ 从备份中恢复
Section titled “2️⃣ 从备份中恢复”多数情况下,你可以尝试从备份中恢复,这个操作有可能修复数据库。

如上图所示,打开备份与恢复面板,点击最新的备份最右侧的恢复按钮,恢复数据。
如果恢复数据之后,不再有错误提示出现,表示数据库已经恢复正常。
如果仍然有错误提示,请尝试下面的方法。
3️⃣ 删除本地数据库文件,再从备份中恢复
Section titled “3️⃣ 删除本地数据库文件,再从备份中恢复”如果直接恢复无法修复数据库,则需要先将本地数据库文件删除(或者更保险一些:改名、移动到其他位置),随后再尝试从备份中恢复。
具体步骤如下:
-
退出 WonderPen
删除当前文档库数据库,需要先退出 WonderPen,否则数据库文件可能仍在使用中,删除可能会失败。
-
打开文档库文件夹
打开当前文档库所在的文件夹。文档库文件夹一般是以
.wplibrary结尾的文件夹。 -
删除(或改名、移动)数据库文件
在文档库文件夹(
.wplibrary文件夹)下,应该能看见一个data.db文件。目录结构类似下面这样:我的文档库.wplibrary/ ├── assets/ ├── backup/ ├── db/ ├── data.db <-- 关注这个文件 └── ...注意,你的文档库目录下可能还会有其他文件,其他文件都不必关注,只需关注那个
data.db文件。如果你的操作隐藏了文件的后缀名,你可能只能看见一个名为
data的文件。接下来,可以删除这个
data.db文件。当然,保险起见,也可以将这个文件改个名,或者移动到其他地方,以便有需要时再恢复回来。如果在这个目录下看到其他以
data开头的文件,比如data.db-shm、data.db-wal,可以一起删除(或改名、移动)。 -
打开 WonderPen 再次从备份恢复
接着,请重新打开 WonderPen,并打开这个文档库。此时,文档库应该显示为空。
最后,请再次从备份恢复,文档库应该就能恢复正常了。
仍然有问题?
Section titled “仍然有问题?”如果仍然遇到问题,请通过 Email 等方式联系我们。
一些常见的错误代码:
| code | 含义 | 常见场景 |
|---|---|---|
SQLITE_INTERNAL | 内部逻辑错误 | SQLite 内部 bug(极少见) |
SQLITE_PERM | 权限错误 | 无法写入数据库文件 |
SQLITE_ABORT | 操作被中断 | 事务被手动中止 |
SQLITE_BUSY | 数据库被锁定 | 多进程同时写入数据库 |
SQLITE_LOCKED | 数据库文件锁冲突 | 同一连接中的锁竞争 |
SQLITE_NOMEM | 内存不足 | 系统资源不足 |
SQLITE_READONLY | 只读数据库 | 数据库以只读模式打开 |
SQLITE_IOERR | I/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 文件 | 打开的文件不是数据库 |