You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中PostgreSQL连接配置报错:服务‘Servers’定义未找到

解决Django连接PostgreSQL时"service 'Servers' not found"错误

问题分析

报错django.db.utils.OperationalError: definition of service "Servers" not found本质是PostgreSQL客户端无法读取到你定义的Servers服务配置,下面是逐一排查和修复的步骤:

1. 修正.pg_service.conf的存放路径

Windows系统下,PostgreSQL默认的服务配置文件路径是%APPDATA%\postgresql\pg_service.conf,而非你当前放置的%APPDATA%\.pg_service.conf:

  • 手动创建%APPDATA%\postgresql目录(如果不存在)
  • 将你的.pg_service.conf移动到该目录下
  • 或者通过环境变量PGSERVICEFILE指定配置文件的绝对路径,比如在运行Django的终端中执行:
    set PGSERVICEFILE=C:\Users\你的用户名\AppData\Roaming\.pg_service.conf
    
    (若要永久生效,需添加到系统环境变量)

2. 验证服务配置的有效性

用PostgreSQL自带的psql工具直接测试服务配置是否可用,这能排除Django层面的问题:

psql service=Servers

如果该命令同样报错,说明服务配置文件存在格式问题:

  • 检查[Servers]块的键值对是否有多余空格(比如host = localhost这种带空格的写法会失效)
  • 确保服务名Servers的大小写和Django配置完全一致(PostgreSQL服务名区分大小写)

3. 调整passfile的配置

  • 路径问题:Django中passfile的相对路径是基于运行时的工作目录,而非manage.py所在目录,建议改用绝对路径,比如:
    "passfile": "C:\\your-project-path\\passfile"
    
  • 内容问题:passfile里的密码不能用星号代替,必须填写真实密码,格式严格遵循localhost:5432:HyCloud:wingto:你的真实密码,不能有多余换行或空格。

4. 确认PostgreSQL服务状态

确保本地PostgreSQL服务正在运行,且端口5432未被占用:

netstat -ano | findstr :5432

如果没有输出结果,打开Windows服务列表,找到postgresql-x64-xx(xx为你的PostgreSQL版本号)服务并启动它。

测试顺序建议

先通过psql service=Servers确认PostgreSQL客户端能正常连接,再启动Django测试,这样可以快速区分是PostgreSQL配置问题还是Django配置问题。

内容的提问来源于stack exchange,提问作者Wingto Kwong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 22:37:26