Winget更新或列出包时报0x87af0001 sql logic error如何解决
故障原因
0x87af0001 sql logic error 是winget本地存储包源索引、已安装软件记录的SQLite数据库损坏导致的,所有需要读取该数据库的操作(包括查询已安装包列表、安装/升级软件)都会触发该报错,和oh-my-posh包本身无关。
修复步骤
- 关闭所有终端窗口,打开任务管理器结束所有
winget.exe相关进程,避免后续操作时数据库文件被占用。也可以直接打开管理员权限的终端执行命令强制结束进程:taskkill /f /im winget.exe - 打开资源管理器,在地址栏输入以下路径回车,进入winget本地数据存储目录:
%LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\ - 找到目录下所有后缀为
.db、.db-wal、.db-shm的文件,全部删除。这些是损坏的本地缓存、索引数据库文件,删除后winget会自动生成全新的文件,不会影响已安装的软件。 - 重新打开终端,执行源重置命令,强制winget拉取官方最新包源、重建本地数据库:
winget source reset --force - 等待源重置完成后,先执行
winget list验证是否还会触发报错,确认功能恢复正常后,再执行oh-my-posh升级命令即可:winget upgrade oh-my-posh
如果上述操作完成后仍有报错,可以打开Microsoft Store搜索「应用安装程序」,将其更新到最新版本后重复以上修复步骤即可。
内容的提问来源于stack exchange,提问作者Francesco
相关产品推荐
相关产品推荐

