解决-Android: io.objectbox.exception.DbException

方案有两个, 一个是官方给的方法1:

方法1
查找官方文档,按下面步骤操作就能解决。Delete the JSON file (objectbox-models/default.json)(删除objectbox-models/default.json)
Build the project to generate a new JSON file from scratch(重新build项目,生成一个新的JSON文件)
Commit the recreated JSON file to your VCS (e.g. git)(提交到本地版本管理)
Delete all previously create ObjectBox databases (for Android, e.g. delete the app’s data or uninstall the app)(删除之前所有创建的ObjectBox的数据库,在Android中就是删除APP的数据或者直接卸载APP)

这样的确可以解决问题,但是如果,现有的设备很多,我们无法卸载安装app,且当前的编译环境变化了default.json的文件已经更新了那么我们就可以用方法2解决了

方法2

报错的原因是:由于我们修改了有@Entity标注的实体的内容,重新编译项目之后,生成的UID和APP本地缓存里面的Incoming Entity ID不一致。

上面的方法就是卸载app, 删除数据库,那我们换个思路,我们只要更改了数据库的存储位置,这样初始化数据库时,也不会再去读取旧的数据库导致报错了,如下:
 

 boxStore = MyObjectBox.builder()
                .androidContext(context.getApplicationContext())
                .directory(new File(Constants.ROOT_PATH+"data/"))
                .build();

这样就不会报错了!

其实我们并没有解决根本问题,如果本地数据库的数据特别重要,那就不能用这种办法了,如果有更好的方案,请在评论区告诉我,非常感谢!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值