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

Django尝试使用PSQL 9.6报错,实际已安装12.15版本

解决Django连接PostgreSQL版本不匹配的NotSupportedError问题

核心问题:你本地的psql客户端是12.15,但Django实际连接的PostgreSQL服务器是9.6.24——Django检测的是服务器版本而非客户端版本,这才是触发NotSupportedError的原因。

排查与修复步骤:

  • 检查Django数据库配置
    打开项目settings.py中的DATABASES配置,确认HOST、PORT参数是否指向了正确的PostgreSQL 12实例:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': 'your_db_name',
            'USER': 'your_db_user',
            'PASSWORD': 'your_db_password',
            'HOST': 'localhost',  # 若指向远程服务器,可能是远程用了9.6
            'PORT': '5432',       # 确认端口对应PostgreSQL 12的监听端口
        }
    }
    
  • 确认本地PostgreSQL实例状态

    • 执行sudo systemctl list-units | grep postgresql,查看是否存在9.6版本的服务单元(如postgresql@9.6-main.service),哪怕未运行也可能残留配置。
    • 查看端口配置:对比/etc/postgresql/12/main/postgresql.conf和/etc/postgresql/9.6/main/postgresql.conf中的port参数,确认12版本的监听端口是否与Django配置一致。
  • 修正连接指向

    • 若本地残留9.6实例,可卸载旧版本(注意备份数据):sudo apt remove postgresql-9.6
    • 若连接了远程9.6服务器,要么升级远程服务器到12+,要么修改Django配置指向正确的12版本服务器。
  • 验证修复结果
    执行python3 manage.py shell,进入交互环境后运行以下代码确认服务器版本:

    from django.db import connection
    with connection.cursor() as cursor:
        cursor.execute("SELECT version();")
        print(cursor.fetchone())
    

    确认输出为12.15后,运行python3 manage.py migrate测试是否仍报错。

内容的提问来源于stack exchange,提问作者S. G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:52:17