role “ctsdb“ cannot be dropped because some objects depend on it,DETAIL: 1 object in database ctsdb

[postgres@db113 qianyi]$ psql -U postgres -d postgres

postgres=# drop user ctsdb;

ERROR: role "ctsdb" cannot be dropped because some objects depend on it

DETAIL: 1 object in database ctsdb

postgres=# \c ctsdb ctsdb

You are now connected to database "ctsdb" as user "ctsdb".

这里找不到任何对象。

重新删除ctsdb,还是同样的报错。

查询search_path,发现依赖于 xc_test用户下的 模式xc_test,

ctsdb=> show search_path;

search_path

-------------

xc_test

(1 row)

删除schema xc_test,这里还好是 xc_test用户创建的,不然就删掉了 xc_test模式下所有的对象。

ctsdb=> drop schema xc_test;

ERROR: must be owner of schema xc_test

修改ctsdb用户的search_path。

ctsdb=> set search_path = public;

SET

切换重新删除user ctsdb;

ctsdb=> \c ctsdb postgres

You are now connected to database "ctsdb" as user "postgres".

这时候找到了所依赖的对象

ctsdb=# drop user ctsdb;

ERROR: role "ctsdb" cannot be dropped because some objects depend on it

DETAIL: owner of function multinstance_init()

ctsdb=# \df multinstance_init();

List of functions

Schema | Name | Result data type | Argument data types | Type

--------+-------------------+------------------+---------------------+------

public | multinstance_init | text | | func

删除该函数,

ctsdb=# drop function public.multinstance_init();

DROP FUNCTION

删除该用户

ctsdb=# \c ctsdb postgres

You are now connected to database "ctsdb" as user "postgres".

ctsdb=# drop user ctsdb;

DROP ROLE

思考:

为什么这里不直接爆出来owner of function multinstance_init(),是否可以理解为登录的不是ctsdb数据库

postgres=# drop user ctsdb;

ERROR: role "ctsdb" cannot be dropped because some objects depend on it

DETAIL: 1 object in database ctsdb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值