如何在 Windows 上卸载 PostgreSQL 17
卸载 PostgreSQL 17 前先备份数据库并确认能恢复,不要只凭卸载器的一句提示判断数据目录会留下。
这份指南覆盖用 winget 按机器安装的 PostgreSQL 17.11-5。安装时用了安装器自己的默认项。没有另建数据库,也没有登录 pgAdmin。
先退出 pgAdmin,并停掉服务 postgresql-x64-17。这次有 pgAdmin4.exe、python.exe 和 pg_ctl.exe。
卸载窗口默认是 Entire application,实测数据目录在 %ProgramFiles%\PostgreSQL\17\data,先备份,如果其中还有要保留的数据库,不要在 Mole 中勾选整个程序目录。
& "${env:ProgramFiles}\PostgreSQL\17\uninstall-postgresql.exe"
数据分别在哪里
| 位置 | 里面是什么 | 如何处理 |
|---|---|---|
%ProgramFiles%\PostgreSQL\17 |
程序和 data |
这次选了默认的 Entire application。程序和 data 都没了 |
%ProgramFiles%\PostgreSQL |
空的上级目录 | 这次还在。确认里面没有别的版本再删 |
%APPDATA%\pgAdmin 和 %APPDATA%\pgadmin4 |
pgAdmin 的会话和缓存 | 这次还在。单独安装的 pgAdmin 也用这两个目录 |
HKLM\SOFTWARE\PostgreSQL |
安装和服务登记 | 这次还在 |
卸载中途会提示 data 目录没有被删除。这次选 Entire application 之后,回读时 17\data 已经不存在。
检查结果
Test-Path "${env:ProgramFiles}\PostgreSQL\17"
Get-Service 'postgresql-x64-17' -ErrorAction SilentlyContinue
- 第一条返回
False,说明 17 的程序目录已经没了。 - 没有输出不能单独证明对象已消失,忽略的权限或查询错误会隐藏结果,需要确认查询成功或明确返回对象不存在。
Mole 列出了程序目录、开始菜单和一条使用记录。它没有列出 pgAdmin 的两个配置目录。
Mole 会列出什么
| 位置 | 项目 | 默认状态 |
|---|---|---|
%ProgramFiles%\PostgreSQL\17 |
程序文件 | 随应用那一行处理 |
%ProgramData%\Microsoft\Windows\Start Menu\Programs\PostgreSQL 17 |
快捷方式 | 默认勾选 |
%ProgramFiles%\PostgreSQL\17 |
这个程序的使用记录 | 默认勾选 |
向导选择 Entire application 后提示数据未删除,但这次通过 Mole 卸载时,版本目录连 data 一起被移除,另一次只用厂商卸载器则留下了该目录和数据,postgresql-x64-17 服务已消失,%APPDATA%\pgAdmin 与 %APPDATA%\pgadmin4 没有列出,独立安装的 pgAdmin 也可能共用这些资料。
这里的默认状态以关闭“卸载时一并移除数据和配置”为前提,明确点击全选或一并移除用户数据会包含列出的个人数据,确认前核对勾选,Mole 删除的已选文件进回收站,已选注册表项先备份再移除,厂商卸载器有自己的删除方式。
这次检查覆盖了什么
记录日期 2026-10-20,PostgreSQL 17,版本 17.11-5,全机范围,厂商卸载器,winget 包为 PostgreSQL.PostgreSQL.17,证据来自 ARM64 Windows 测试环境和 Mole 开发构建,不代表当前下载包已验证,也没有据此验证真实账号、同步资料或生产项目的卸载。
厂商文档,上面的路径和卸载结果来自 Windows 实测,单独注明厂商来源的内容除外。
