Windows Server 2012R2上PGAdmin 4启动失败:无法连接服务器
解决Windows Server 2012R2上PGAdmin4启动失败(SSL模块DLL加载错误)问题
问题背景
Windows Server 2012R2(Build 9600)环境下安装postgresql-12.14-1-windows-x64后,启动PGAdmin 4时弹出错误:The pgAdmin 4 server could not be contacted。已尝试单独安装不同版本PGAdmin 4、删除AppData\Local/AppData\Roaming下的PGAdmin目录、管理员身份运行等操作,均未解决。同系统其他机器可正常启动PGAdmin 4,PostgreSQL服务运行正常,局域网内可通过Telnet连通其端口。错误日志核心提示:导入ssl模块时DLL加载失败,且未显示ssl.py的完整路径。
解决方案
1. 修复PGAdmin自带Python的SSL依赖文件
PGAdmin 4依赖安装包自带的Python环境,SSL模块加载失败多因缺失关键DLL:
- 定位PostgreSQL安装目录下的PGAdmin Python路径,默认路径为:
C:\Program Files\PostgreSQL\12\pgAdmin 4\python - 进入该路径下的
DLLs目录,确认存在libssl-1_1-x64.dll和libcrypto-1_1-x64.dll- 若缺失,从同版本正常运行的机器复制这两个文件到该目录,或重新运行PostgreSQL安装包选择“修复”选项
- 将上述Python路径添加到系统
PATH环境变量的最前端,避免与其他Python环境冲突
2. 手动指定Python模块搜索路径
针对日志中ssl.py路径不完整的问题,可通过快捷方式参数强制指定路径:
- 右键PGAdmin 4快捷方式 → 选择“属性”
- 在“目标”栏末尾添加以下参数(替换为实际的PGAdmin Python Lib路径):
-c "import sys; sys.path.append('C:\\Program Files\\PostgreSQL\\12\\pgAdmin 4\\python\\Lib'); exec(open('C:\\Program Files\\PostgreSQL\\12\\pgAdmin 4\\web\\pgAdmin4.py').read())" - 注意:原目标路径需用引号包裹,示例完整目标内容:
"C:\Program Files\PostgreSQL\12\pgAdmin 4\python\pythonw.exe" -c "import sys; sys.path.append('C:\\Program Files\\PostgreSQL\\12\\pgAdmin 4\\python\\Lib'); exec(open('C:\\Program Files\\PostgreSQL\\12\\pgAdmin 4\\web\\pgAdmin4.py').read())"
3. 安装对应版本的Visual C++运行库
SSL相关DLL依赖Visual C++ Redistributable,Windows Server 2012R2可能缺少该组件:
- 安装Microsoft Visual C++ 2017 Redistributable(x64版本)
- 重启系统后再次启动PGAdmin 4
4. 排查系统环境变量冲突
若系统中存在其他Python环境或SSL相关DLL,可能导致路径优先级冲突:
- 临时移除系统
PATH中其他Python相关的路径条目 - 重启机器后启动PGAdmin 4,若恢复正常则逐步添加路径,定位冲突项并调整顺序
内容的提问来源于stack exchange,提问作者pvntim
相关产品推荐
相关产品推荐

