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

从PG11升级到PG14后PostgreSQL连接URL选项失效求助

PostgreSQL 14连接URL中search_path不生效的解决办法

问题根源

PostgreSQL 14对libpq的URL参数解析逻辑做了调整,对options参数的格式要求更严格,导致PG11中可用的写法在PG14中无法被正确识别。

有效解决方法

方法一:修正URL的options参数格式

  1. 去掉options前多余的&,确保第一个参数以?开头
  2. 对options里的空格进行URL编码(替换为%20)
  3. 正确的连接URL示例:
postgresql://username:password@host:port/database?options=-c%20search_path=my_schema&target_session_attrs=read-write&connect_timeout=5

如果需要设置多个配置项,用空格分隔后编码即可,比如:

postgresql://username:password@host:port/database?options=-c%20search_path=my_schema%20-c%20work_mem=64MB&target_session_attrs=read-write&connect_timeout=5

方法二:连接后手动设置search_path(更稳定)

避开URL参数解析的版本差异,在建立数据库连接后直接执行SQL语句设置search_path,不受PG版本影响:

import psycopg2

# 连接时去掉options参数
conn = psycopg2.connect("postgresql://username:password@host:port/database?target_session_attrs=read-write&connect_timeout=5")
cur = conn.cursor()
# 设置schema路径
cur.execute("SET search_path TO my_schema;")
conn.commit()

# 后续正常执行数据库操作

为什么之前的尝试无效

  • 仅移除options前的&但未正确编码空格,PG14对URL参数的格式校验更严格,未编码的空格会导致参数解析失败
  • 移除-c是错误操作,-c是PostgreSQL指定配置参数的必填前缀,不能省略
  • 未找到替代options设置search_path的正确方式,所以无效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 06:20:04