Django中manage.py执行报错,本地运行项目遇问题求助
本地Django项目启动全命令报错排查方案
看你描述的情况——克隆仓库、改完数据库配置后,runserver/migrate/makemigrations甚至创建超级用户全报错,结合错误里的数据库连接拒绝提示,给你列几个实打实的排查点:
- 先确认本地数据库服务是否真的在运行:
- PostgreSQL用户:Windows去「服务」里找PostgreSQL看状态;Linux执行
systemctl status postgresql;macOS执行brew services list | grep postgresql,确保服务处于running状态。 - MySQL用户:对应查看MySQL服务状态,Windows看系统服务,Linux执行
systemctl status mysqld,macOS执行brew services list | grep mysql。
- PostgreSQL用户:Windows去「服务」里找PostgreSQL看状态;Linux执行
- 核对
settings.py里的数据库配置:
打开项目的settings.py找到DATABASES配置块,逐条确认:NAME:本地是否已经创建了这个数据库?USER/PASSWORD:是否和本地数据库的账号密码完全匹配?HOST:本地连接填localhost或127.0.0.1,不要填远程地址。PORT:PostgreSQL默认5432,MySQL默认3306,别写错端口号。
- 绕开Django直接测试数据库连接:
用数据库自带的命令行工具(比如psql -U 用户名 数据库名或mysql -u 用户名 -p 数据库名)直接连接本地数据库,如果连不上,说明问题出在数据库本身,和Django无关,先解决数据库的基础连接问题。 - 检查虚拟环境和依赖:
- 确认你激活了项目对应的虚拟环境,不要使用全局Python环境。
- 检查是否装对了数据库驱动:PostgreSQL需要安装
psycopg2-binary,MySQL需要安装mysqlclient,执行pip list查看依赖是否存在。
- 排查端口占用和防火墙:
- 用
netstat -ano | grep 端口号(Windows)或lsof -i :端口号(Linux/macOS)查看数据库端口是否被其他程序占用,若被占用可更换端口或杀掉占用进程。 - 暂时关闭本地防火墙,测试是否是防火墙拦截了数据库端口的TCP连接。
- 用
要是这些都排查完还是不行,把settings.py里的DATABASES配置(隐去密码)和完整的错误日志贴出来,再进一步定位问题。
内容的提问来源于stack exchange,提问作者Limbu Khem
相关产品推荐
相关产品推荐

