AnkiDroid 中文文档 下载 App

数据库损坏恢复 —— collection 打不开时的急救方案

现象:AnkiDroid 打开后白屏、崩溃、牌组列表为空

如果你打开 AnkiDroid 后遇到:

大概率是SQLite collection 文件损坏了。下面按恢复成功率从高到低给出方案。

方案 1:从 AnkiWeb 同步恢复(首选)

如果你的数据之前同步到过 AnkiWeb:

  1. 卸载 AnkiDroid(清掉损坏的本地数据)
  2. 重新安装最新版
  3. 首次启动时用 AnkiWeb 账号登录
  4. 同步方向选 从 AnkiWeb 下载
  5. 所有牌组、卡片、学习历史、媒体全部从云端拉回来

这是最快最稳的方案——前提是 AnkiWeb 上的数据是最新的。

方案 2:从自动备份恢复

如果 AnkiWeb 上的数据不是最新(手机上还有没同步的新内容),先尝试自动备份:

  1. 先不要卸载 App(卸了备份也没了)
  2. 用 USB 或文件管理器找到 AnkiDroid 的备份目录:
   内部存储 / Android / data / com.ichi2.anki / files / AnkiDroid / backups /
  1. 把最新的备份 .apkg 文件拷贝出来(保存到电脑或网盘)
  2. 卸载 AnkiDroid
  3. 重新安装
  4. 用拷贝出来的 .apkg 导入恢复(从文件管理器点 → 用 AnkiDroid 打开)

自动备份不包含媒体文件,恢复后立即跑"检查媒体" + 同步 AnkiWeb,媒体会自动回来。

方案 3:修复损坏的数据库(进阶)

如果你不想卸载重装,可以尝试修复:

  1. 打开手机文件管理器(或用电脑 USB 连)
  2. 找到 AnkiDroid 的主数据库文件:
   内部存储 / Android / data / com.ichi2.anki / files / AnkiDroid / collection.anki2
  1. 把这个文件复制一份到电脑上
  2. 用 SQLite 工具(如 DB Browser for SQLite)打开它,执行:
   PRAGMA integrity_check;
  1. 如果输出不是 ok,说明数据库有坏块,可以尝试:
   VACUUM;
  1. 修复完的数据库重新命名覆盖回手机上的那个位置
  2. 打开 AnkiDroid 测试

这一步需要对 SQLite 有基本了解。如果你不确定自己在做什么,回到方案 1 或方案 2 更安全。

方案 4:拆 .colpkg 手动恢复

如果你有一份完整的 .colpkg 备份:

  1. 把 .colpkg 文件拷贝到电脑
  2. 改后缀为 .zip 然后解压
  3. 解压出来会有 collection.anki2(数据库)和 media/(媒体文件)目录
  4. 在新设备上安装 AnkiDroid 后,先不要打开
  5. 用 USB 把解压出来的数据库和媒体文件手动放到 AnkiDroid 的对应位置
  6. 然后打开 App

这比直接导入 .colpkg 更底层——能绕过 AnkiDroid 导入过程中可能遇到的问题。

数据库损坏后预防复发

  1. 不要在 AnkiDroid 运行时强行关闭它——正常退出或等它自己关
  2. USB 传输 .apkg / .colpkg 时等拷贝完再拔线
  3. 每天至少同步一次 AnkiWeb
  4. 定期手动导出 .colpkg 完整备份(含媒体文件)
  5. 自动备份保留天数设长一点(90 天)
  6. 手机上尽量不要同时运行多个会消耗大量存储的应用

如果所有方案都失败

实在恢复不了,那就接受现实——从头开始做牌组。好在:

延伸阅读