跳转到内容

cc-switch 导入/云同步失败:外键、只读数据库与覆盖问题

Quick fix

升级 cc-switch 并避免同步 provider_health / 只读 db;导入后点击“导入”而非“保存”。

报错原文
下载失败:数据库错误: 恢复表 provider_health 数据失败: FOREIGN KEY constraint failed

该 cluster 包含多类导入/同步问题。最常见的是 WebDAV 云端下载恢复时同步 provider_health 表,而该表存在指向 providers 的外键;如果某台设备删除了供应商,另一台设备的本地 provider_health 仍保留对应记录,恢复快照时就会触发 FOREIGN KEY constraint failed。维护者确认 provider_health 不应参与同步并已修复。其他变体包括:cc-switch.db 被网盘同步后变成只读导致 attempt to write a readonly database;导入配置后需要再次点击左侧“导入”而不是仅点击“保存”;旧版本配置目录同步会用最后激活供应商覆盖其他设备;以及 3.19.1 中 profiles 表未触发 WebDAV/S3 自动同步、SQL 备份/恢复可能丢失 AUTOINCREMENT 高水位等审计问题。

  1. 将两端 cc-switch 升级到包含修复的版本;维护者确认 provider_health 不参与同步的问题已修复,会随新版更新。

  2. 如果使用 WebDAV/网盘同步,只同步 cc-switch.db,不要同步整个旧配置目录;新版本采用分层存储架构,只需要同步数据库文件。

  3. 如果报错 attempt to write a readonly database,检查同步目录中的 cc-switch.db 文件权限,将其改为可读写,然后重启 cc-switch。

    cc-switch.db(位于你设置的云同步文件夹内)
    # 将文件权限从只读改为读写
  4. 手动导入 JSON/备份时,选择文件后点击左侧“导入”按钮,而不是只点击下方的“保存”;有用户确认这样导入成功。

  5. 如果云端数据已变成新版本 db-v6 而旧数据无法恢复,先安装旧版本 cc-switch 把数据同步回来,再升级到新版本。

  6. WebDAV 出现 401 时,检查 WebDAV 服务端路径、账号密码或权限设置;有用户提到需关闭路径 1024 检查。

Toolcc-switch
Version未知
PlatformsWindowsmacOSLinux
为什么两台设备都是最新版,WebDAV 下载仍然报 FOREIGN KEY constraint failed?
因为一台设备删除了供应商后,另一台设备本地 provider_health 仍保留对应记录,恢复云端快照时找不到对应 providers 主记录,触发外键失败。维护者已确认 provider_health 不应参与同步。
导入配置文件后为什么没有变化?
选择导入文件后需要再次点击左侧“导入”按钮,而不是只点击下方的“保存”。有用户确认该操作成功。
使用坚果云等网盘同步后为什么提示 attempt to write a readonly database?
同步文件夹中的 cc-switch.db 可能变成只读。找到该数据库文件,把权限改为读写,然后重启 cc-switch。
云端数据变成 db-v6 后旧数据还能恢复吗?
可以先安装旧版本 cc-switch,把云端数据同步回来,然后再升级到新版本。
WebDAV 提示 401 怎么办?
检查 WebDAV 服务端账号、密码、路径和权限;有用户提到某些服务端需要关闭路径 1024 检查。
MCP 配置会自动同步吗?
早期设计中只有软件 MCP 数据为空时会在首次运行导入一次,后续通过外部方式安装的 MCP 不会自动同步;维护者提到未来版本会增加手动同步按钮。

这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。