MacOS Big Sur下psycopg2与PostgreSQL 14兼容性问题咨询
psycopg2与PostgreSQL 14兼容性说明
psycopg2 完全支持 PostgreSQL 14 及更高正式版本,你遇到的报错并非 psycopg2 对 PostgreSQL 14 不兼容导致。
报错根因分析
你遇到的psycopg2.errors.UndefinedFunction: function array_cat(anyarray, anyarray) does not exist报错,通常由以下几类问题触发:
- PostgreSQL 升级流程不完整:brew 升级 PostgreSQL 默认仅升级二进制文件,不会自动迁移旧版本数据库集群的系统 schema、内置函数配置,未执行
pg_upgrade或数据导出导入操作直接切换新版本,就会出现内置函数找不到的异常。 - psycopg2 版本过旧:2.9.1 之前的 psycopg2 版本适配 PostgreSQL 14 新特性时存在缺陷,可能触发函数调用异常。
- 数据库
search_path配置异常:如果search_path未包含pg_catalogschema,调用系统内置函数时会无法索引到对应实现。
无需降级 PostgreSQL 的修复方案
- 升级 psycopg2 到最新稳定版:开发环境可直接执行
pip install --upgrade psycopg2-binary,生产环境建议编译安装对应最新版本的 psycopg2。 - 检查数据库 search_path 配置:执行 SQL
SHOW search_path;确认返回结果包含pg_catalog,如缺失可执行ALTER ROLE 你的数据库用户名 SET search_path = 原有自定义schema列表, pg_catalog;修复。 - 补全 PostgreSQL 数据迁移流程:将 PostgreSQL 13 的数据用
pg_dump全量导出后,导入到 PostgreSQL 14 的新集群中,确保系统 schema 和内置函数完整。
psycopg2 支持的 PostgreSQL 版本列表
当前 psycopg2 稳定版支持所有仍在官方维护周期内的 PostgreSQL 版本:
- PostgreSQL 10 ~ 17 所有正式发布版本
如果需要兼容 PostgreSQL 7.4 ~ 9.6 等已停止维护的历史版本,需使用 2.8.x 及更低版本的 psycopg2。
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

