我想删除用户,但收到此消息。
postgres=# drop user user1;
ERROR: role "user1" cannot be dropped because some objects depend on it
DETAIL: owner of schema schema1
postgres=#
所以,我尝试删除架构并收到此消息:
postgres=# drop schema schema1 cascade;
ERROR: schema "schema1" does not exist
但是,架构存在!
postgres=# \dn
List of schemas
Name | Owner
---------------+----------
schema1 | user1
public | postgres
(2 rows)
答案 0 :(得分:0)
假设您在同一个数据库中执行这两个命令,最可能的解释是“schema1”未被调用,您认为它是什么。在它之后会有一个空格。
尝试以下内容,看看是否有奇怪的东西。
SELECT ':' || nspname || ':' FROM pg_namespace;
编辑:更正了海报的信息
您的查询结果未显示与原始名称不同的内容。我以大写形式创建了模式名称,并在\ dn
的输出中以大写形式显示
但那不是你展示的,不是吗?
postgres=# \dn
List of schemas
Name | Owner
---------------+----------
schema1 | user1
public | postgres
(2 rows)
所以 - 如果它实际上是大写的,那意味着你通过在创建时双引它来强制它为大写。
PostgreSQL通常会将标识符折叠为小写(SQL标识符通常应该不区分大小写)
因此,如果您在创建时将其强制为大写,则需要强制使用大写字母来删除它。
DROP SCHEMA "SCHEMA1" CASCADE;