0
点赞
收藏
分享

微信扫一扫

kingbase中指定用户默认查找schema,或曰用户无法使用public schema下函数问题


kingbase有一些古怪的设置,search_path就是其中一例。这个命令是设置用户默认的schema。如果不设置,比如用户user1想读取schema2下的表,那在sql中就要指明schema。如:

select * from schema2.table1;

如果不想这么折腾,那就将schema2指定为user1的默认schema:

alter user user1 set search_path to schema2;

但是!以上这个句子有问题!会造成user1的默认schema只是schema2,从而丢失了公共schema public的默认访问权。其实这个search_path和windows环境变量中的path类似,它可以指定多个。上面指定了一个,覆盖了默认,原本天然可以访问public下元素的,现在就不行了。前不久,我们有个kingbase库安装了kingbaseGIS,加入了对空间数据的支持。而这些空间函数,位于public下:

kingbase中指定用户默认查找schema,或曰用户无法使用public schema下函数问题_sql

kingbase中指定用户默认查找schema,或曰用户无法使用public schema下函数问题_PUBLIC_02


结果执行下面SQL,死活不行,总是报错,认不了这个ST_Polygon。

SELECT ST_Polygon(ST_GeomFromText(
'LINESTRING(75.15 29.53,77 29,77.6 29.5, 75.15 29.53)'),
4326);

将用户的权限赋到无所不能了,还是不行。后来还是人大金仓的人发现了问题症结所在,就是这个seach_path问题。正确的做法是:

alter user user1 set search_path to schema2,PUBLIC,SYS_CATALOG;

kingbase源自postgreSQL。估计这个毛病是继承下来的。这个search_path简直莫名其妙,不知所谓。


举报

相关推荐

设计用户模块的schema

0 条评论