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版本服务器。
- 若本地残留9.6实例,可卸载旧版本(注意备份数据):
验证修复结果
执行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
相关产品推荐
相关产品推荐

