You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CBLite Replicator清理文档后无法重同步的正确解决方案咨询

解决方案:Couchbase Lite Pull同步重置全量拉取

问题原因

Pull模式下,Couchbase的Replicator依赖Checkpoint记录同步进度——这个标记会告诉Sync Gateway客户端已经同步到哪一步了。你本地purge所有文档后,Checkpoint依然保留,网关会认为你已经同步过目标Channel下的所有数据,因此不会推送任何内容,导致同步进度为0。

推荐方案

1. 启动Replicator时重置Checkpoint(官方推荐)

这是处理全量重新同步最直接、可靠的方式。只需在配置Replicator时将resetCheckpoint设为true,启动一次即可触发全量拉取,同步完成后Replicator会自动生成新的Checkpoint。

示例代码:

// 构建同步配置
let remoteTarget = URLEndpoint(url: URL(string: "your-sync-gateway-url")!)
let config = ReplicatorConfiguration(database: localDatabase, target: remoteTarget)
config.replicatorType = .pull
config.channels = ["your-target-channel"]
config.resetCheckpoint = true // 关键:重置同步进度标记

// 启动同步
let replicator = Replicator(config: config)
replicator.start()

注意:resetCheckpoint是一次性生效的,下次启动同步时可以改回false(或者保持true也不会重复重置,因为重置后会生成新的Checkpoint)。

2. 手动删除本地Checkpoint文档(备选)

Checkpoint以特殊文档形式存储在本地数据库中,ID格式为_sync:checkpoint:<target-url-hash>。你可以直接删除该文档来重置进度,但这种方式需要自行定位文档ID,不如第一种方法便捷,仅推荐在无法修改Replicator配置的场景下使用。

注意事项

  • 重置Checkpoint会触发全量拉取,需考虑用户的网络环境,建议在WiFi环境下执行,避免消耗过多移动流量。
  • 确保本地purge操作完全完成后再启动同步,避免数据操作冲突。

内容的提问来源于stack exchange,提问作者Tushar Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 05:02:42