You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows7下Django连接PostgreSQL执行迁移命令报错求助

解决Django 2.1.5无法识别PostgreSQL数据库后端的问题

这个错误我之前在Windows环境下也碰到过,本质上是Django找不到PostgreSQL的适配驱动库,下面是一步步的排查和解决办法:

1. 优先解决psycopg2安装问题

Django连接PostgreSQL必须依赖psycopg2库,而Windows系统下直接安装psycopg2经常会因为缺少编译环境失败,所以推荐安装预编译的psycopg2-binary版本:

  • 先卸载可能存在的不兼容版本:
    pip uninstall psycopg2 psycopg2-binary -y
    
  • 安装和Python 3.7、Django 2.1.5兼容的版本(推荐2.8.6,这个版本适配性很好):
    pip install psycopg2-binary==2.8.6
    

2. 确认settings.py中的数据库配置正确

Django 2.0之后已经统一使用django.db.backends.postgresql作为引擎名,不要再用旧的postgresql_psycopg2,检查你的配置是否类似这样:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': '你创建的数据库名',  # 要和pgAdmin里创建的一致
        'USER': 'postgres',  # PostgreSQL默认用户名,如果你改了就填修改后的
        'PASSWORD': '你的数据库密码',
        'HOST': '127.0.0.1',  # 本地数据库填这个,远程的话填对应IP
        'PORT': '5432',  # PostgreSQL默认端口,没改就不用动
    }
}

3. 检查Python虚拟环境(如果使用了的话)

如果你用了虚拟环境来隔离项目依赖,一定要确保激活了对应的虚拟环境再安装psycopg2-binary,不然库会装到全局Python环境里,Django项目根本找不到:

  • 激活虚拟环境(假设你的虚拟环境文件夹叫venv):
    venv\Scripts\activate
    
  • 激活成功后再执行前面的pip安装命令

4. 验证PostgreSQL服务状态

虽然这个错误主要是后端驱动问题,但也可以顺便确认下PostgreSQL服务是否正常运行:

  • 按下Win + R输入services.msc打开服务列表
  • 找到postgresql-x64-10(或者对应你安装的版本),确保状态是正在运行,如果没启动就右键启动它

做完这些步骤后,再重新执行python manage.py makemigrations或者migrate命令,应该就能正常连接PostgreSQL了。

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

火山引擎 最新活动