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

博客讲述了Kingbase(源自PostgreSQL)数据库中search_path设置的问题,指出只设置单一schema会导致失去对public schema的默认访问权。作者通过一个实际例子展示了由于错误设置search_path,导致使用空间函数ST_Polygon时遇到的困扰。解决方案是将public和其他必要schema加入search_path,例如:`alter user user1 set search_path to schema2, PUBLIC, SYS_CATALOG`。这个问题揭示了search_path设置的微妙之处和可能带来的困扰。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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下:
在这里插入图片描述

在这里插入图片描述
结果执行下面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简直莫名其妙,不知所谓。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值