如何修改PostgreSQL数据库所有权给含点号的用户?
解决PostgreSQL中带点号的角色名修改数据库所有者问题
在PostgreSQL中,包含点号这类特殊字符的标识符必须用双引号包裹,但要注意以下规则:
- 双引号是PostgreSQL识别特殊字符标识符的标准方式,方括号是SQL Server的语法,PostgreSQL不支持
- 角色名的大小写需要和创建时完全一致(PostgreSQL默认自动将未加双引号的标识符转为小写,若创建角色时用双引号指定了大小写,修改时也必须严格匹配)
正确的执行语句:
ALTER DATABASE test OWNER TO "john.doe";
额外排查点
- 先确认角色确实存在,执行语句验证:
SELECT rolname FROM pg_roles WHERE rolname = 'john.doe'; - 确保执行操作的用户拥有
ALTER DATABASE权限,以及对目标角色的ASSIGNMENT权限
内容的提问来源于stack exchange,提问作者mangocaptain
相关产品推荐
相关产品推荐

