如何解决HoloLens2上UE5 UWP应用的SQLITE_IOERR_SEEK错误
Unreal Engine 5.0.3 C++中SQLite在HoloLens 2 UWP应用的磁盘I/O错误问题
初始情况
自行编写的库作为模块集成到Unreal项目中,该库依赖SQLite,包含业务逻辑及SQLite数据库读写功能。库中通过引入<sqlite/sqlite3.h>头文件使用SQLite功能,依赖项由Epic Games官方SQLite插件提供。在本地Windows机器的Unreal编辑器“Session Frontend”中运行自定义单元测试时,数据库可正常创建、读写,所有测试均通过。
问题
应用可在本地正常构建测试,也能针对HoloLens 2完成构建、部署并运行。但在HoloLens 2上运行时,当应用尝试创建数据库表,会触发“磁盘I/O错误”,扩展错误码为5642(SQLITE_IOERR_SEEK)。项目专属Appdata的LocalState目录中可见已创建的0KB数据库文件。
环境规格
- Unreal Engine 5.0.3
- Epic Games官方SQLite插件
- Windows SDK版本10.0.18362.0
- C++17
- Microsoft HoloLens 2:Windows Holographic for Business(版本22621.1266),已启用开发功能
- 主机系统:Windows 11
已尝试的排查方案
- 向同一目录写入带内容的简单文本文件,验证写入权限——成功
- 集成“SQLite for Universal Windows Platform”包,使用UWP版sqlite3.lib二进制文件——失败,仍出现SQLITE_IOERR_SEEK
- 使用连接到HoloLens 2的外部存储设备(SSD)写入数据库——失败,仍出现SQLITE_IOERR_SEEK
- 使用Unreal SQLite的FSQLiteDatabase类及相关功能——失败,仍出现SQLITE_IOERR_SEEK
- 启用尽可能多的UWP权限——失败,仍出现SQLITE_IOERR_SEEK
启用的权限列表:
+CapabilityList=internetClientServer +CapabilityList=privateNetworkClientServer +CapabilityList=internetClient +CapabilityList=AllJoyn +CapabilityList=codeGeneration +DeviceCapabilityList=microphone +DeviceCapabilityList=webcam +DeviceCapabilityList=gazeInput +DeviceCapabilityList=wiFiControl +DeviceCapabilityList=proximity +DeviceCapabilityList=location +DeviceCapabilityList=Bluetooth +UapCapabilityList=musicLibrary +UapCapabilityList=picturesLibrary +UapCapabilityList=videosLibrary +UapCapabilityList=blockedChatMessages +UapCapabilityList=chat +UapCapabilityList=enterpriseAuthentication +UapCapabilityList=objects3D +UapCapabilityList=phoneCall +UapCapabilityList=removableStorage +UapCapabilityList=sharedUserCertificates +UapCapabilityList=userAccountInformation +UapCapabilityList=voipCall +Uap2CapabilityList=spatialPerception +UapCapabilityList=appointments +Uap3CapabilityList=backgroundMediaPlayback +UapCapabilityList=contacts +Uap6CapabilityList=graphicsCapture +IotCapabilityList=lowLevelDevices +Uap6CapabilityList=offlineMapsManagement +Uap2CapabilityList=phoneCallHistoryPublic +Uap3CapabilityList=remoteSystem +IotCapabilityList=systemManagement +Uap4CapabilityList=userDataTasks +Uap3CapabilityList=userNotificationListener +DeviceCapabilityList=lowLevel +DeviceCapabilityList=pointOfService +RescapCapabilityList=developmentModeNetwork
参考资源
- HoloLens官方论坛关于SQLite兼容性的讨论
- SQLite4Unity3d仓库
- SQLitePCL.raw仓库相关issue
- Stack Overflow关于SQLite与NFS文件同步、锁的问题讨论
- Microsoft官方UWP SQLite数据访问文档
- SQLite.UWP仓库
- Stack Overflow关于UWP C++中SQLite数据库打开崩溃的问题讨论
内容的提问来源于stack exchange,提问作者Dev98
相关产品推荐
相关产品推荐

