【发布时间】:2020-03-21 15:03:51
【问题描述】:
在 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
我在这里缺少什么?由于这个我不再需要的索引,无法删除它并且无法插入数据。
【问题讨论】:
-
您确定在所有这些操作中都连接到同一个数据库吗?为什么你使用 python 而不是 psql 似乎是一个交互式用例?
-
您的所有输入和输出是逐字复制的,还是您尝试手动匿名化它们?
-
你必须确保你在正确的数据库上下文中,看起来你的炼金术运行是在一个不保存索引的数据库上发生的,大多数我在人们看到这个再次使用默认值,即 postgres db。
-
我正在使用 python 模块 sqlachemy,上面的查询是使用 'engine.execute()' 执行的。我确定我正在连接到同一个数据库,因为没有其他数据库
-
我也有。删除时不存在,列出或创建时->已经存在。
标签: postgresql database-indexes