Django迁移至RDS PostgreSQL时出现用户密码认证失败错误
解决Django连接AWS RDS PostgreSQL时USER参数未读取的问题
避免系统环境变量冲突
系统默认存在USER环境变量(对应当前登录用户名),如果你.env里用了USER作为数据库用户名的变量名,Django会优先读取系统的USER值,而非你自定义的。把.env里的用户名变量名改成DB_USER,然后在settings.py里修改引用为os.getenv('DB_USER')。确认.env加载逻辑正确
确保你通过python-dotenv正确加载.env文件,在settings.py最顶部添加:from dotenv import load_dotenv import os load_dotenv() # 这行必须放在读取环境变量的代码之前未安装
python-dotenv的话先执行:pip install python-dotenv排查环境变量实际读取值
在settings.py中添加打印代码,验证读取到的数据库用户名:print("当前读取的DB用户:", os.getenv('DB_USER')) # 对应你修改后的变量名执行
python3 manage.py migrate前查看输出,确认是否为你在.env中配置的RDS用户名。检查DATABASES配置完整性
确保settings.py中的数据库配置正确引用修改后的变量,示例:DATABASES = { 'default': { 'ENGINE': os.getenv('DB_ENGINE'), 'NAME': 'postgres', 'USER': os.getenv('DB_USER'), 'PASSWORD': os.getenv('DB_PASSWORD'), 'HOST': os.getenv('DB_HOST'), 'PORT': os.getenv('DB_PORT'), } }清除虚拟环境缓存
退出虚拟环境,删除项目目录下的pyc文件:find . -name "*.pyc" -delete,重新激活虚拟环境后再执行迁移命令。
内容的提问来源于stack exchange,提问作者GidB
相关产品推荐
相关产品推荐

