无法删除 postgres 中的索引,因为它不存在

new*_*bie 4 postgresql database-indexes

在 postgres 数据库中,我有一个唯一约束和为其创建的两个唯一索引。我使用以下查询删除了约束:

alter table my_schema.users drop constraint users_dept_uk
Run Code Online (Sandbox Code Playgroud)

它已删除约束和一个索引,但第二个索引仍然存在。

以下查询仍然告诉我索引存在:

SELECT r.relname, r.relkind, n.nspname
FROM pg_class r INNER JOIN pg_namespace n ON r.relnamespace = n.oid
WHERE r.relname = 'users_dept_idx';
Run Code Online (Sandbox Code Playgroud)

它给出以下输出:

users_dept_idx, i, my_schema
Run Code Online (Sandbox Code Playgroud)

当我执行下面的查询时:

drop index my_schema.users_dept_idx
Run Code Online (Sandbox Code Playgroud)

我收到错误:

sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedObject) index "users_dept_idx" does not exist
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么?由于我不再需要这个索引,无法删除它也无法插入数据。

new*_*bie 6

奇怪的是索引名称需要用引号引起来。下面的命令工作得非常好并且也删除了索引

drop index my_schema."users_dept_idx"
Run Code Online (Sandbox Code Playgroud)