Azure Postgres弹性服务器:创建用户后删除提示不存在的问题
问题原因与解决方法
- 核心原因:PostgreSQL对未用双引号包裹的标识符(角色名、表名等)会自动转换为全小写。你创建角色时的语句
CREATE ROLE myDatabase_IntegrationServicesAccount LOGIN WITH PASSWORD 'test@12345'没有给角色名加双引号,因此数据库实际存储的角色名是全小写的mydatabase_integrationservicesaccount。 - 删除失败的原因:执行
DROP USER myDatabase_IntegrationServicesAccount;时,同样未加双引号,PostgreSQL会将该名称转为全小写,但你误以为要删除的是驼峰形式的角色名,导致匹配失败。
解决办法
根据实际情况选择其中一种:
- 直接删除全小写的角色名:
DROP USER mydatabase_integrationservicesaccount;
- 若需要保留驼峰式角色名(需确保创建时已用双引号包裹),删除时也必须用双引号包裹角色名:
DROP USER "myDatabase_IntegrationServicesAccount";
注意:如果要创建带大小写的角色,创建语句也必须给角色名加双引号,否则PostgreSQL仍会自动转小写。
内容的提问来源于stack exchange,提问作者Leonardo
相关产品推荐
相关产品推荐

