【发布时间】:2023-03-31 10:22:01
【问题描述】:
我正在尝试在我的数据库上运行内联查询 - 已安装 citext 扩展名(使用 CREATE EXTENSION) - 但执行的查询在调用函数时不断抛出此错误:
type "citext" does not exist
DO
LANGUAGE plpgsql
$$
DECLARE
_id INT;
BEGIN
SELECT * FROM "dbo"."MyFunction"(_id, 'some value'::citext);
END;
$$;
如果我省略 ::citext 演员表,它会说:
function dbo.MyFunction(integer, unknown) does not exist. You might need to add explicit type casts.
添加了citext 扩展,它是架构的一部分,可与其他查询一起使用。这总是随机出现 - 是什么原因造成的?
编辑: 已安装的扩展:
extname | nspname
----------+-----------
plpgsql | pg_catalog
citext | public
uuid-ossp | public
搜索路径:
show search_path;
search_path
-----------
dbo
【问题讨论】:
-
citext ... is part of the schema- 属于哪个模式?运行:SELECT e.extname, n.nspname FROM pg_extension e JOIN pg_namespace n ON n.oid = e.extnamespace;你会从show search_path得到什么? -
更新了问题以反映该信息。有趣的是,我似乎也遇到了这个问题,试图在内联查询中使用 uuid_generate_v4()。
-
哦,伙计.. 这可能特定于 DataGrip 2016 及其启动连接的方式。我尝试使用 pgAdmin 进行相同的查询,并且 search_path 包含扩展名,而 DataGrip 中没有。
-
不相关但是:你应该避免使用带引号的标识符。他们的麻烦比他们值得的要麻烦得多。
-
所以怀疑。我为我的答案添加了更多指针。
标签: postgresql postgresql-9.3 search-path postgresql-extensions