附加模块 citext 已安装,但未找到类型 "citext"?
Additional module citext is installed, but type "citext" not found?
我正在尝试 运行 我的数据库上的内联查询 - 安装了 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
据推测,search_path
中缺少扩展架构。在这个相关答案中阅读如何设置模式搜索路径:
- How does the search_path influence identifier resolution and the "current schema"
您的客户端似乎在连接上设置了 search_path = dbo
,这似乎配置错误。 dbo
是我们在 SQL 服务器上经常看到的东西(曾经是这里的默认架构还是仍然是?),对于 Postgres 来说非常不典型。不知道你是怎么到那里的。
- Why do table names in SQL Server start with "dbo"?
另一种方法是将扩展也安装到 dbo
架构中:
- Best way to install hstore on multiple schemas in a Postgres database?
你甚至可以move (most) extensions to a different schema:
ALTER EXTENSION citext SET SCHEMA dbo;
但我建议安装专用模式的扩展并将其包含在 search_path
中。
无论如何不要管plpgsql
。它是默认安装的,应该留在 pg_catalog
.
不管怎样,用不同的 search_path
设置清理混乱。
关于第二个问题:这是遵循Function Type Resolution的规则。调用无法解析,因为 citext
没有隐式转换为 text
.
相关
我正在尝试 运行 我的数据库上的内联查询 - 安装了 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
据推测,search_path
中缺少扩展架构。在这个相关答案中阅读如何设置模式搜索路径:
- How does the search_path influence identifier resolution and the "current schema"
您的客户端似乎在连接上设置了 search_path = dbo
,这似乎配置错误。 dbo
是我们在 SQL 服务器上经常看到的东西(曾经是这里的默认架构还是仍然是?),对于 Postgres 来说非常不典型。不知道你是怎么到那里的。
- Why do table names in SQL Server start with "dbo"?
另一种方法是将扩展也安装到 dbo
架构中:
- Best way to install hstore on multiple schemas in a Postgres database?
你甚至可以move (most) extensions to a different schema:
ALTER EXTENSION citext SET SCHEMA dbo;
但我建议安装专用模式的扩展并将其包含在 search_path
中。
无论如何不要管plpgsql
。它是默认安装的,应该留在 pg_catalog
.
不管怎样,用不同的 search_path
设置清理混乱。
关于第二个问题:这是遵循Function Type Resolution的规则。调用无法解析,因为 citext
没有隐式转换为 text
.
相关