首页 > 解决方案 > 无法在 postgres 中删除索引,因为它不存在

问题描述

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

alter table my_schema.users drop constraint users_dept_uk

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

下面的查询仍然给出索引存在

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';

给出以下输出

users_dept_idx, i, my_schema

当我执行以下查询时

drop index my_schema.users_dept_idx

我收到错误

sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedObject) index "users_dept_idx" does not exist

我在这里想念什么?由于此索引,我不再需要它,因此无法删除它并且无法插入数据。

标签: postgresqldatabase-indexes

解决方案


索引名称需要在其周围加上引号,这很奇怪。下面的命令工作得很好并且也删除了索引

drop index my_schema."users_dept_idx"

推荐阅读