Windows 上使用 Flutter 时出现 ObjectBoxException:“无法创建存储:传入实体 ID 与现有 UID 不匹配”

问题描述 投票:0回答:1

我正在开发一个使用 ObjectBox 作为数据库的 Flutter 应用程序。该应用程序在通过 USB 连接的 Android 设备上运行良好,但当我尝试在 Flutter 提供的 Windows 桌面环境上运行它时,遇到了一个持续存在的问题。

我收到的具体错误消息是:

未处理的异常:ObjectBoxException:无法创建商店:传入实体 ID 1:5518923810860262496 与现有 UID 4909511370117383253 不匹配

在 Android 设备上运行应用程序时不会出现此错误。以下是我尝试过的步骤和配置:

  1. 确保两个平台保持一致
    objectbox-model.json
  2. 删除并重新生成
    objectbox-model.json
    及相关文件。
  3. 验证实体定义和注释正确且一致。
  4. 重复运行
    flutter pub run build_runner build --delete-conflicting-outputs
    以解决生成文件中的任何潜在冲突。

尽管做出了这些努力,该错误仅在 Windows 环境中仍然存在。我正在寻找有关为什么会出现这种差异以及如何解决它的见解,以便应用程序在两个平台上顺利运行。

任何有关如何排除和解决此问题的建议将不胜感激。谢谢!

我尝试了多种解决方案来解决 Windows 环境中的 ObjectBoxException 错误。最初,我预计使用

flutter pub run build_runner build --delete-conflicting-outputs
重新生成 ObjectBox 模型文件将解决实体 ID 和 UID 中的任何不一致问题。此方法通常通过清理和重建必要的文件来解决此类问题。然而,尽管多次尝试,在 Windows 上运行时错误仍然存在,但在 Android 设备上运行应用程序时没有出现任何问题。

我还尝试手动删除并重新创建 ObjectBox 模型文件,确保 Dart 代码中的实体定义与 ObjectBox 期望的架构匹配。我的期望是全新的设置可以消除导致错误的任何差异。不幸的是,这并没有改变 Windows 上的结果,尽管 Android 上一切都按预期运行。两种环境之间的行为差异是出乎意料的,并且仍未得到解决。

android flutter windows dart objectbox
1个回答
0
投票

这意味着代码中定义的数据模型(使用@Entity类)与现有数据库文件的数据模型之间存在冲突。

在开发过程中,最简单的选择可能是删除数据库文件并再次运行应用程序。

来源:

© www.soinside.com 2019 - 2024. All rights reserved.