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

Django连接PostgreSQL出现fe_sendauth无密码提供错误求助

解决Django连接PostgreSQL时的fe_sendauth: no password supplied错误

这个错误的核心是Django在连接PostgreSQL时未获取到正确的密码参数,以下是针对性的排查和解决步骤:

1. 修复环境变量加载问题

你的.env文件里使用了export前缀,但python-dotenv读取时会把export当成变量名的一部分,导致无法正确解析。

  • 修正.env文件,去掉所有export:
    DB_NAME=demo
    DB_USER=postgres
    DB_USER_PASSWORD=12345678
    DB_HOST=localhost
    
  • 确保已安装并正确配置python-dotenv:
    1. 安装依赖:pip install python-dotenv
    2. 在settings.py开头添加加载代码:
      import os
      from dotenv import load_dotenv
      
      load_dotenv()  # 加载项目根目录下的.env文件
      
  • 验证环境变量是否加载成功:
    运行python manage.py shell,执行以下代码:
    import os
    print(os.environ.get('DB_USER_PASSWORD'))
    
    如果输出None,说明环境变量未正确加载,检查.env文件是否在项目根目录,或给load_dotenv()指定正确路径(比如load_dotenv('/path/to/your/.env'))。

2. 临时硬编码验证(排查环境变量问题)

如果不确定环境变量是否有问题,可以临时在settings.py中直接写入数据库参数,测试是否能连接:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'demo',
        'USER': 'postgres',
        'PASSWORD': '12345678',
        'HOST': 'localhost',
    }
}

如果这样能成功连接,说明问题确实出在环境变量加载环节,回到第一步重新排查。

3. 检查PostgreSQL的认证配置

如果环境变量配置正确但仍报错,需要检查PostgreSQL的pg_hba.conf文件:

  • 找到pg_hba.conf的位置:
    • Linux:通常在/var/lib/postgresql/<版本号>/main/pg_hba.conf
    • Windows:通常在C:\Program Files\PostgreSQL\<版本号>\data\pg_hba.conf
  • 修改localhost对应的认证规则,确保使用密码认证(比如scram-sha-256或md5):
    host    all             all             127.0.0.1/32            scram-sha-256
    host    all             all             ::1/128                 scram-sha-256
    
  • 修改后重启PostgreSQL服务。

4. 添加端口配置(可选)

PostgreSQL默认端口是5432,如果你的数据库端口被修改过,需要在settings.py中添加端口配置:

DATABASES = {
    'default': {
        # ... 其他配置
        'PORT': os.environ.get('DB_PORT', '5432'),
    }
}

对应的.env文件可以添加DB_PORT=5432(如果端口未修改,此步骤可跳过)。

内容的提问来源于stack exchange,提问作者Rishikesh More

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 22:50:05