Postgresql Postgres数据库链接查询在哪里运行?
全部, 我正在目标服务器上运行一个查询,从源服务器检索数据。我的查询正在使用摘要函数。摘要位于两台服务器上。它嵌入在两台服务器上都存在的UDF中。顺便说一句,查询的“选择”部分在源服务器上运行良好 我认为,当您提交远程查询时,它将在远程框上执行。我收到“1函数摘要(文本,未知)不存在…”错误。另外,由于两台服务器上的所有函数都在公共模式中,我不认为Postgres在查找函数时会失败 谢谢你的帮助 蒂亚Postgresql Postgres数据库链接查询在哪里运行?,postgresql,function,dblink,Postgresql,Function,Dblink,全部, 我正在目标服务器上运行一个查询,从源服务器检索数据。我的查询正在使用摘要函数。摘要位于两台服务器上。它嵌入在两台服务器上都存在的UDF中。顺便说一句,查询的“选择”部分在源服务器上运行良好 我认为,当您提交远程查询时,它将在远程框上执行。我收到“1函数摘要(文本,未知)不存在…”错误。另外,由于两台服务器上的所有函数都在公共模式中,我不认为Postgres在查找函数时会失败 谢谢你的帮助 蒂亚 Mike查询在连接字符串中指定的服务器上执行。如果未提供主机,则在本地主机上。它们是使用连接字
Mike查询在连接字符串中指定的服务器上执行。如果未提供主机,则在本地主机上。它们是使用连接字符串中的角色执行的。这还包括该角色的
搜索路径
与您的问题无关,但在调试您描述的问题时,我会尝试两种方法:
使用与dblink连接字符串相同的角色连接到远程服务器并执行查询
模式限定dblink中的函数:public.digest(..)
谢谢你,卢卡斯!我在远程服务器上开发了这个查询,它在这个平台上运行得非常好。摘要函数嵌入在函数的层次结构中,这些函数创建一个“哈希”来加密某些列。我没有这些函数的编辑权限,因此无法按照您的建议修改它们。Postgres中的“公共”模式不是大致类似于SQL Server中的“dbo”吗?我的连接是到数据所在的模式。当我在此架构中运行查询时,它能够找到函数,但无法通过dblink找到它们。我找到了具有必要权限的人来更改函数以完全限定函数调用。这似乎只是dblink的问题。@MikeA是的,它类似于SQL Server中的dbo,默认情况下它位于角色搜索路径中,但这是可以更改的。我假设您在dblink连接字符串中使用的角色就是这种情况。