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

Realm Sync同步失败:客户端与服务端int、double属性不匹配如何解决

问题原因

情况1报错(基础类型int/double)

你的服务端Schema中int/double类型的字段没有配置"required": true,默认允许为null;但Java基础类型属于不可空类型,Realm会将其识别为非空字段,两端空性不匹配就触发了Schema mismatch错误。

情况2报错(包装类型Integer/Double)

你之前用基础类型运行过应用,本地已经生成了对应字段为非空的Schema缓存,而你的Realm配置默认开启了**仅累加(additive-only)**的Schema迁移模式,这种模式不允许修改已有字段的可空性,因此修改为包装类型后会触发迁移错误。

解决方案

根据业务需求选择以下任意一种路径即可:

路径1:字段设置为不可空(推荐,符合total、数量类字段的业务逻辑)

  1. 修改服务端Schema,给所有数值类型字段添加"required": true约束,示例如下:
// total字段修改示例
"total": {
  "bsonType": "double",
  "required": true
}
// invoiceItems下的quantity、unitPrice字段也同步添加该配置
  1. 客户端仍使用基础类型int/double定义字段,此时两端字段空性完全对齐。
  2. 清除本地旧Schema缓存:开发阶段直接卸载重装应用即可;如果是已上线版本,需要关闭additive-only模式,编写Schema迁移脚本将对应字段调整为非空。

路径2:字段允许为null

  1. 服务端Schema无需修改,客户端使用Integer/Double包装类型定义字段。
  2. 清除本地旧Schema缓存:开发阶段直接卸载重装应用即可;如果是已上线版本,需要关闭additive-only模式,编写Schema迁移脚本将对应字段调整为可空。

注意事项

开发阶段调试Schema适配问题时,优先卸载重装应用清除本地Realm缓存,避免旧Schema遗留导致的异常报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:45:03