PostgreSQL 函数不存在
Posted
技术标签:
【中文标题】PostgreSQL 函数不存在【英文标题】:PostgreSQL function does not exist 【发布时间】:2014-12-16 04:56:35 【问题描述】:我正在使用 SQL 查询,它使用与此类似的自定义编写函数
CREATE OR REPLACE FUNCTION per_cont(myarray integer[], percentile real)
这在 pgAdmin 工具中完美运行,但是当我在我的 java 应用程序中使用此查询时,它给了我一个错误:
function per_cont(integer[], real) does not exist
我正在使用 JDBI 库与数据库进行交互。为什么从 java 应用程序运行时找不到函数?我该如何解决?
【问题讨论】:
您很可能没有连接到您认为的同一个数据库。 我也想过是不是我犯了这个错误,但检查了几次。在JDBI中是需要外部导入postgresql函数,还是这个库会自动识别函数? 如何你是如何“使用”这个功能的?显然,您必须提供触发错误消息的命令。并确保提供完整的错误信息。还有你的 Postgres 版本(总是)。 【参考方案1】:对于您显示的CREATE OR REPLACE FUNCTION
命令,错误消息完全没有意义。假设您实际上是在 DML 语句中调用函数,例如
SELECT per_cont('1,2,3', 1);
显然您必须使用相同的数据库,但您说已经建立。
您的search_path
也必须匹配。由于您没有明确提供模式,因此该函数在创建时在“当前”模式中创建。相同的架构必须显示在另一个会话的search_path
中,否则该功能不可见。
链接答案中的详细说明:
How does the search_path influence identifier resolution and the "current schema"【讨论】:
以上是关于PostgreSQL 函数不存在的主要内容,如果未能解决你的问题,请参考以下文章
函数 corr(双精度, 双精度) 不存在 -- PostgreSQL