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

Django项目部署PythonAnywhere时数据库迁移连接失败求助

解决PythonAnywhere部署Django时远程PostgreSQL连接被拒的问题

可能的原因及对应解决步骤:

1. 数据库服务商的IP白名单未包含PythonAnywhere服务器IP

远程PostgreSQL服务商(如ElephantSQL、Nhost)通常会限制仅允许白名单内的IP访问。你需要:

  • 在PythonAnywhere的Bash控制台执行curl ifconfig.me,获取当前实例的出站IP。
  • 登录数据库服务商后台,将该IP添加到数据库的访问白名单中。
  • 等待几分钟让白名单设置生效后,重新尝试执行迁移。

2. Django数据库配置存在格式错误

检查settings.py中的DATABASES配置,注意以下细节:

  • 确保HOST字段没有多余的引号,比如错误信息中的"'USER'.db.elephantsql.com"需修正为USER.db.elephantsql.com(移除包裹的单引号)。
  • 确认USER、PASSWORD、NAME、PORT完全匹配服务商提供的凭据,无拼写错误。
  • 多数远程PostgreSQL要求强制SSL连接,需在配置中添加SSL选项:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'NAME': 'your_db_name',
            'USER': 'your_db_user',
            'PASSWORD': 'your_db_password',
            'HOST': 'your_db_host',
            'PORT': '5432',
            'OPTIONS': {
                'sslmode': 'require',
            },
        }
    }
    

3. 测试基础网络连接

在PythonAnywhere的Bash控制台使用psql命令直接测试数据库连接,排除Django配置的干扰:

psql -h your_db_host -p 5432 -U your_db_user -d your_db_name

执行后输入数据库密码,如果连接成功,说明问题出在Django配置;如果仍报错,需再次检查白名单或服务商的服务状态。

4. 确认PythonAnywhere的网络权限

PythonAnywhere免费账户对外部网络访问有部分限制,但PostgreSQL的5432端口是允许访问的。若你使用的是付费账户,可确认是否有自定义的网络规则限制了出站连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 01:03:03