Django无法连接PostgreSQL数据库问题求助
问题排查与解决思路
1. 先修正明显的拼写错误
你的数据库配置里ENGINE键拼写成了ENGINGE,这个低级错误会导致Django无法正确识别数据库引擎,即便.env里传了正确值,也会触发默认配置逻辑,直接影响后续连接。先把拼写改对:
'ENGINE': config('ENGINE', default='django.db.backends.postgresql'),
2. 确认.env配置的准确性
- 检查.env文件里的
NAME值,必须和生产环境PostgreSQL中实际创建的数据库名称完全一致(PostgreSQL库名区分大小写,如果创建时用引号指定了大小写,必须严格匹配)。本地能连公网库说明HOST、PORT、USER、PASSWORD是对的,但生产环境报错,大概率是.env里的NAME没设置,还在使用默认值"postgre",而生产环境根本没有这个库。 - 验证方法:在生产环境服务器上用psql命令直接测试连接:
psql -h 你的公网HOST -U 数据库USER -d 实际库名,如果能连上,说明库存在,问题出在Django没读到正确的NAME值。
3. 修正dj-database-url的写法
你当前的写法有语法问题,正确的配置方式应该是:
import dj_database_url # 方式一:直接赋值默认配置 DATABASES = { 'default': dj_database_url.config(default='postgresql://user:password@host:port/dbname') } # 方式二:读取.env里的DATABASE_URL DATABASES['default'] = dj_database_url.config('DATABASE_URL')
同时确保.env里的DATABASE_URL格式正确:postgresql://用户名:密码@公网主机:端口/数据库名,重点确认末尾的数据库名和生产环境实际存在的一致。
4. 检查生产环境数据库是否真的存在
登录生产环境的PostgreSQL服务器,执行\l命令查看所有数据库列表,确认你要连接的库确实存在,并且当前配置的数据库用户有访问该库的权限。
内容的提问来源于stack exchange,提问作者Alien
相关产品推荐
相关产品推荐

