我有一个代码库,它依赖于通过完整的独立连接 URL 连接到 Postgres。 Python 代码库在 PG11 上运行,但切换到 PG14 后,连接 URL 中的选项不再被识别:
postgresql://username:password@host:port/database?&options=-csearch_path=my_schema&target_session_attrs=read-write&connect_timeout=5
具体来说这部分:?&options=-csearch_path=my_schema&target_session_attrs=read-write&connect_timeout=5
无法识别
search_path
,因此默认情况下未设置架构 my_schema
。
我尝试了很多可能性,包括但似乎都不起作用:
?&options=-c%20search_path=my_schema
你一定是搞错了。该 URI 在语法上不正确,并且不适用于任何版本的 PostgreSQL。问题是
?&
就在数据库名称之后,而它应该只是 ?
=
在第一个参数值中,当您必须将其 URI 转义为 %3D
时
此外,
port
不是有效的端口号。我假设您在发布之前修改了实际的 URI,这是一个坏主意,因为它很可能隐藏了您的一些实际错误。