ObjectBox Sync Docker部署报错:Album实体artistId缺少virtualTarget
报错原因
你使用的ObjectBox Sync服务器版本(21.5.14)过旧,和客户端2.9.2-RC4版本生成的模型字段不兼容:旧版服务器要求关系字段标注virtualTarget,而新版客户端生成的模型使用relationTarget字段标识关联目标,导致服务器无法识别。
解决方法
方案1(推荐:永久生效)
升级ObjectBox Sync服务器到和客户端版本匹配的版本,将Docker运行命令中的镜像版本替换为2.10.0及以上版本即可:
docker run --rm -it -v %cd%:/data --publish 127.0.0.1:9999:9999 --publish 127.0.0.1:9980:9980 --user=0 objectboxio/sync:2.10.0-server --model /data/objectbox-model.json --unsecured-no-authentication --browser-bind 0.0.0.0:9980
方案2(临时生效:无需更换服务器版本)
手动修改objectbox-model.json文件,将所有relationTarget字段名替换为virtualTarget,以你现有配置为例,需要修改的位置共5处:
- Album实体下的artistId字段:将
"relationTarget": "Artist"改为"virtualTarget": "Artist" - Invoice实体下的customerId字段:将
"relationTarget": "Customer"改为"virtualTarget": "Customer" - InvoiceItem实体下的invoiceId字段:将
"relationTarget": "Invoice"改为"virtualTarget": "Invoice" - InvoiceItem实体下的trackId字段:将
"relationTarget": "Track"改为"virtualTarget": "Track" - Track实体下的albumId字段:将
"relationTarget": "Album"改为"virtualTarget": "Album"
修改完成后重新执行Docker启动命令即可,注意如果后续重新构建项目触发了模型文件自动生成,需要再次手动修改该字段。
额外检查项
如果修改完成后仍然报错,删除当前目录下自动生成的objectbox数据库文件夹,再重新启动服务器即可。
内容的提问来源于stack exchange,提问作者Menci
相关产品推荐
相关产品推荐

