gpt4 book ai didi

postgresql - postgis 不适用于所有 postgres 用户

转载 作者:行者123 更新时间:2023-11-29 13:16:23 24 4
gpt4 key购买 nike

在启用 Potgis 的数据库上创建新用户时,我遇到了一个奇怪的问题:该新用户无法访问 postgis 扩展,而早期创建的用户可以。

使用我的用户帐户,我得到以下输出:

mydb => SELECT postgis_version();
postgis_version
---------------------------------------
2.3 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
(1 row)

对于新用户,我得到以下信息:

mydb => SELECT postgis_version()
mydb-> ;
ERROR: function postgis_version() does not exist
LINE 1: SELECT postgis_version()
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.

QGIS 还提示我 postgis 未激活:

2018-01-23T16:38:13 1   No PostGIS support in the database.

我正在连接到完全相同的数据库。用户确实有权访问公共(public)模式和geometry_columns 表。

我在这里有点迷失,因为根据我的信息,Postgis 是数据库级别的扩展,它应该适用于所有用户。

最佳答案

PostGIS 扩展必须安装在一个架构中,该架构也必须位于用户搜索路径中。

您可以使用命令检查它的安装位置

select e.extname,n.* 
from pg_extension e, pg_namespace n
where e.extnamespace = n.oid and e.extname='postgis';

您可以通过发出命令来检查安装它的架构是否在用户搜索路径中

show search_path;

如果没有,您可以通过更改用户来永久添加路径。

ALTER USER username SET search_path TO "$user", public, postgis_schema;

由于上一条命令仅在下次登录时生效,因此您可以通过应用立即应用

SET search_path TO "$user", public, postgis_schema;

关于postgresql - postgis 不适用于所有 postgres 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48407622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com