带有公共前缀的PostgreSql hstore扩展问题

带有公共前缀的PostgreSql hstore扩展问题,postgresql,database-schema,Postgresql,Database Schema,我一直在努力使用PostgreSql和hstore扩展,因此在我的sql转储文件中,hstore字段是用以下脚本创建的: CREATE EXTENSION IF NOT EXISTS hstore WITH SCHEMA public; 所以我得到了一个错误 structure.sql:2058: ERROR: type "public.hstore" does not exist 但万一我用 metadata hstore 一切正常 另外,需要注意的是,这只发生在我们的CI上,我们作为

我一直在努力使用PostgreSql和hstore扩展,因此在我的sql转储文件中,hstore字段是用以下脚本创建的:

CREATE EXTENSION IF NOT EXISTS hstore WITH SCHEMA public;
所以我得到了一个错误

structure.sql:2058: ERROR:  type "public.hstore" does not exist
但万一我用

metadata hstore
一切正常

另外,需要注意的是,这只发生在我们的CI上,我们作为用户
运行者运行
,但是
public
模式的所有者是
postgres

如果需要更多的数据,请让我知道,我会提供


关于,

您可以使用命令
\dx hstore

检查扩展是否已经安装,以及在何处安装。当我们使用Postgres9.3时,我们必须手动安装hstore
,在我们的CI上,他们使用Postgres9.6,在Db创建时自动添加
hstore`

此外,它将
hstore
放在命名空间
pg_catalog
中,这是
hstore
无法被
public.hstore
看到的主要原因

所以我要做的是在CI上创建db之后再做一步,删除特定的扩展并在正确的模式中创建新的扩展


不管怎么说,这个问题并不是那么难,而是棘手而怪异

当我们使用Postgres9.3时,我们必须手动安装hstore
,在我们的CI上,他们使用Postgres9.6,在创建数据库时自动添加
hstore`

此外,它将
hstore
放在命名空间
pg_catalog
中,这是
hstore
无法被
public.hstore
看到的主要原因

所以我要做的是在CI上创建db之后再做一步,删除特定的扩展并在正确的模式中创建新的扩展


不管怎么说,这个问题并不是那么难,而是棘手而怪异

可能它已安装在另一个架构中?请尝试
\dx hstore
@JGH是的。结果表明,默认情况下,Postgres9.6在
pg_catalog
命名空间中包含此扩展,因此使用前缀
public
调用时不可见。可能它已安装在另一个架构中?请尝试
\dx hstore
@JGH是的。结果表明,默认情况下,Postgres9.6在
pg_catalog
命名空间中包含此扩展,因此使用前缀
public
调用时不可见。再次感谢。主要问题是位置不对。再次感谢。主要问题是位置不对。
metadata hstore