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

请求协助解决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的数据库。
  • 需要保留现有数据:

    1. 从错误信息里拿到旧UID:就是提示里的existing UID 524091579686138896
    2. 在你的实体类上手动指定这个旧UID,比如待办事项类:
      @Entity(uid: 524091579686138896)
      class Todo {
        int id;
        String title;
        bool completed;
      
        Todo({this.id = 0, required this.title, this.completed = false});
      }
      
    3. 重新运行flutter pub run build_runner build生成新的ObjectBox代码,此时UID匹配就能正常打开数据库了。之后如果还要修改实体结构,注意遵循ObjectBox的迁移规则(比如新增字段不用改UID,删除/重命名字段需要手动处理迁移逻辑)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 21:27:03