Azure Django应用无法执行PostgreSQL数据库migrate命令求助
问题诊断与解决
核心原因
你遇到的错误是数据库主机名字段格式错误:把端口号port=5432直接拼到了主机名字符串里,导致DNS无法解析这个非法的主机名。
修复步骤
1. 修正Django数据库配置
打开settings.py里的DATABASES配置块,确保HOST和PORT是独立的两个配置项:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': '你的数据库名称', 'USER': '你的数据库用户名', 'PASSWORD': '你的数据库密码', 'HOST': 'Azure PostgreSQL服务器主机名(格式如xxx.postgres.database.azure.com)', 'PORT': '5432', # 单独设置端口,不要混入HOST字段 } }
如果是通过Azure应用服务的环境变量配置(参考教程方式),检查对应环境变量:
DB_HOST:仅填写纯主机名,不要附带port=5432DB_PORT:单独设置为5432
2. 验证数据库连接可用性
在SSH终端用psql直接测试连接(替换为你的实际信息):
psql -h <正确的主机名> -p 5432 -U <用户名>@<服务器名> -d <数据库名>
如果连接失败,额外检查:
- Azure PostgreSQL防火墙规则:是否已添加应用服务的出站IP,或开启了「允许Azure服务和资源访问此服务器」选项
- 用户名格式:Azure PostgreSQL要求用户名为
用户名@服务器名的完整格式
3. 生效新配置
修正配置后,重新部署应用,或在Azure门户重启应用服务,确保新配置加载生效。
内容的提问来源于stack exchange,提问作者champlooSIXSIX
相关产品推荐
相关产品推荐

