我正在开发一个使用 ObjectBox 作为数据库的 Flutter 应用程序。该应用程序在通过 USB 连接的 Android 设备上运行良好,但当我尝试在 Flutter 提供的 Windows 桌面环境上运行它时,遇到了一个持续存在的问题。
我收到的具体错误消息是:
未处理的异常:ObjectBoxException:无法创建商店:传入实体 ID 1:5518923810860262496 与现有 UID 4909511370117383253 不匹配
在 Android 设备上运行应用程序时不会出现此错误。以下是我尝试过的步骤和配置:
objectbox-model.json
。objectbox-model.json
及相关文件。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 上一切都按预期运行。两种环境之间的行为差异是出乎意料的,并且仍未得到解决。
这意味着代码中定义的数据模型(使用@Entity类)与现有数据库文件的数据模型之间存在冲突。
在开发过程中,最简单的选择可能是删除数据库文件并再次运行应用程序。
来源: