2012-10-22 84 views
1

我有两个用户Jasonpostgres。由于我刚开始学习这一点,我不知道为什么这个代码不起作用。我想要做的就是放弃一个用户,但是不能。我的代码有什么问题?删除角色不会丢失虽然角色名称存在

postgres=# DROP OWNED BY Jason; 
ERROR: role "jason" does not exist 
postgres=# \du 
          List of roles 
Role name |     Attributes     | Member of 
-----------+------------------------------------------------+----------- 
Jason  | Superuser, Create role, Create DB, Replication | {} 
postgres | Superuser, Create role, Create DB, Replication | {} 

回答

7

区分大小写。

DROP OWNED BY "Jason"; 

PostgreSQL的大小写敏感的,它只是较低的情况下,不带引号的标识符。为了保留大小写,使用“双引号”标识符。

+0

我讨厌大小写敏感。谢谢。有用。 – jason328

+0

@ jason328:所以不要使用双引号,标识符不区分大小写。我会*从不*使用混合大小写的用户名开始。决不。 –

+0

@ErwinBrandstetter:AFAIK由于本地约定与模式自动发现的结合,一些MS框架需要(或实际上需要)它。我很确定我以前在这里遇到过这类事情,但我不能声称自己的经历。 –

1

您应该遵循一些事情,同时删除用户

首先,应检查并删除该用户是owned数据库

DROP OWNED By "Jason" ; // remove database objects owned by a database role 

接下来可以通过

删除用户的角色
DROP ROLE "Jason";