请求协助解决Flutter+ObjectBox创建存储时的UID不匹配错误
解决ObjectBox实体UID不匹配错误
先看你遇到的错误:
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)]
Unhandled Exception: ObjectBoxException: failed to create store:
Incoming entity ID 1:2836062220106497081 does not match existing UID 524091579686138896
这个问题本质是代码里实体类的UID和本地数据库中已存储的实体UID不匹配。ObjectBox靠UID识别实体结构,一旦你修改了实体类(比如增删字段、改类名),重新生成的UID和旧数据库里的不一致,就会触发这个报错。
下面给两种场景的解决办法:
开发阶段(数据不重要):直接清空旧数据库就行。最简单的方式是卸载App重装,或者手动删除数据库文件:
- Android:找到
/data/data/你的App包名/files/objectbox目录删除 - iOS:在App沙盒的
Documents/objectbox路径删除文件
重启App后,ObjectBox会生成新的匹配UID的数据库。
- Android:找到
需要保留现有数据:
- 从错误信息里拿到旧UID:就是提示里的
existing UID 524091579686138896 - 在你的实体类上手动指定这个旧UID,比如待办事项类:
@Entity(uid: 524091579686138896) class Todo { int id; String title; bool completed; Todo({this.id = 0, required this.title, this.completed = false}); } - 重新运行
flutter pub run build_runner build生成新的ObjectBox代码,此时UID匹配就能正常打开数据库了。之后如果还要修改实体结构,注意遵循ObjectBox的迁移规则(比如新增字段不用改UID,删除/重命名字段需要手动处理迁移逻辑)。
- 从错误信息里拿到旧UID:就是提示里的
内容的提问来源于stack exchange,提问作者Tariro
相关产品推荐
相关产品推荐

