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

Django部署到Ubuntu20.04后访问站点报1045数据库错误但manage.py操作正常

问题诱因

核心原因是部署后的Django Web进程未正确加载你编写的settings.py数据库配置,具体触发场景通常为以下几种:

  • 配置模块加载错误:若你的项目拆分了开发/生产两套独立的settings配置,Web服务启动时加载的生产配置未修改数据库参数,仍为默认的root无密码配置;而你手动执行manage.py命令时默认加载开发配置,因此数据库操作正常。
  • 环境变量覆盖配置:项目使用了django-environ、dj-database-url这类依赖环境变量的配置工具,Web进程运行环境中未配置DATABASE_URL或变量值错误,工具自动 fallback 到MySQL默认的root无密码连接参数,覆盖了你硬编码在settings.py中的配置。
  • 服务启动参数错误:使用systemd、supervisor托管Web服务(Gunicorn/uWSGI等)时,未正确传递DJANGO_SETTINGS_MODULE环境变量,或指定的配置文件路径错误,导致Django加载了初始默认配置。
  • WSGI入口逻辑错误:项目的wsgi.py/asgi.py入口文件存在手动覆盖DATABASES配置的代码,或错误修改了settings模块的加载逻辑。
解决方案

按优先级依次排查修复:

  1. 验证配置加载一致性
    在项目根目录新建测试脚本test_db_conf.py,写入以下代码:
import os
import django
# 替换为你实际的项目配置模块名
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "your_project_name.settings")
django.setup()
from django.conf import settings
print("Current database config:", settings.DATABASES['default'])

首先手动执行python3 test_db_conf.py,确认输出的配置和你编写的pplus_user参数一致。再用Web服务的运行用户(通常为www-data)执行:sudo -u www-data python3 test_db_conf.py,如果输出为root无密码配置,即可确认是进程运行环境的配置问题。
2. 排查环境变量覆盖逻辑
检查settings.py中是否存在以下类似代码:

import dj_database_url
DATABASES = {
    'default': dj_database_url.config(default='mysql://root@localhost/')
}

如果存在,可直接删除这段逻辑保留你的硬编码配置,也可以在Web服务的启动配置中添加正确的DATABASE_URL环境变量:

mysql://pplus_user:dfa@4GL-5qQU@localhost:3306/pplus_db
  1. 修复服务启动配置
    以systemd托管Gunicorn为例,在你的.service配置文件的[Service]段添加以下配置:
Environment="DJANGO_SETTINGS_MODULE=your_project_name.settings"
# 若使用环境变量配置数据库则添加下面这行
Environment="DATABASE_URL=mysql://pplus_user:dfa@4GL-5qQU@localhost:3306/pplus_db"

修改完成后执行systemctl daemon-reload,再重启Web服务即可生效。
4. 核对WSGI入口文件
确认项目根目录的wsgi.py文件中,os.environ.setdefault指定的配置模块路径正确,无其他覆盖DATABASES参数的冗余代码。
5. 核对多环境配置文件
若你的项目拆分了多套settings配置,确认生产环境配置文件中的数据库参数和你编写的一致,同时Web服务启动时指定的配置模块为生产配置模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 05:42:03