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

使用Buddy测试Django REST FRAMEWORK+PostgreSQL项目连接报错如何解决

问题根因

你当前的报错核心原因是Django配置中数据库的HOST参数为空:

  • 本地开发时PostgreSQL运行在本地,空HOST默认走Unix域套接字连接,所以可以正常运行
  • Buddy中PostgreSQL是独立的服务容器,和你的代码执行容器不在同一个实例内,空HOST会默认尝试连接执行容器本地的PostgreSQL,自然找不到对应服务

修复方案

方案1:适配多环境的最优方案(推荐)

修改settings.py的数据库配置,从环境变量读取HOST参数,兼顾本地开发和CI环境:

# Database
# https://docs.djangoproject.com/en/3.2/ref/settings/#databases
import os

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': os.getenv('DB_NAME', 'DBname'),
        'USER': os.getenv('DB_USER', 'DBuser'),
        'PASSWORD': os.getenv('DB_PASSWORD', 'DBpassword'),
        'HOST': os.getenv('DB_HOST', ''), # 本地默认空,CI环境传入对应服务主机名
        'PORT': os.getenv('DB_PORT', '5432'),
    }
}

之后在Buddy的流水线变量配置中添加如下环境变量即可:

  • DB_HOST: postgres

如果不想单独配置变量,也可以直接在执行命令里临时注入:

pip install -r requirements.txt
cd Project
DB_HOST=postgres python manage.py test

方案2:临时快速验证方案

如果只需要先验证CI流程可以跑通,直接把settings.py里的HOST值改为你的PostgreSQL服务主机名postgres即可:

'HOST': 'postgres',

额外排查点

如果修改后仍有报错,可以确认两点:

  • 你配置的PostgreSQL服务已经关联到当前执行任务的流水线,没有被绑定到其他流水线
  • PostgreSQL服务的配置参数(库名、用户名、密码、端口)和Django配置完全一致

内容的提问来源于stack exchange,提问作者juan Mendez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:06:06