在数据库连接 URL 中指定参数时,我的 SQL 命令在从public
架构(默认数据库中)查找对象时遇到问题。search_path
currentSchema
这怎么可能解决?
长篇大论:
- 我有一个应用程序架构
app1
。 - 数据库在模式中安装了 Postgis 扩展
public
(我们希望将其保留在那里)。 数据库
search_path
配置如下:ALTER DATABASE tst SET search_path = "$user", public
当连接到数据库而不在 URL 中指定当前模式时,默认模式是公共的,因此它会找到所有地理函数和对象。但是我
app1
在寻址对象时必须指定模式前缀app1
,例如:select st_asgeojson(geometry,15,4) from app1.shapes limit 5
这不方便。所以我将“app1”作为当前模式参数添加到连接 URL 中,如下所示:
jdbc:postgresql://localhost:5432/tst?currentSchema=app1
现在,当我连接到数据库时,在从 app1 模式寻址对象时,我不必指定 app1 前缀。但是,涉及 Postgis 对象的请求不再起作用并失败:
错误:函数 st_asgeojson(public.geometry, integer) 不存在
我的理解是它应该搜索 中的对象search_path
并在模式中找到它们,public
但由于某种原因它不会发生。我也尝试在用户级别指定搜索路径,但它仍然不起作用。