使用Rails迁移删除索引而不知道其名称

bns*_*ith 8 database migration indexing ruby-on-rails

我有一个表,其中的复合索引不是通过rails迁移创建的.现在,我需要创建一个rails迁移来删除这个索引并创建一个新索引,但我不一定知道索引的名称是什么.

我知道可以在迁移步骤中获取表名和列名列表.是否可以获取特定表上的索引名称列表?或者,从另一个角度来看,是否可以删除表上的所有索引?或者是编写我自己的特定于数据库的SQL查询来获取此信息的唯一选项?

小智 10

您可以通过以下方式获取表中所有索引的详细信息:

ActiveRecord::Base.connection.indexes('tablename')
Run Code Online (Sandbox Code Playgroud)

这将返回一个ActiveRecord::ConnectionAdapters::IndexDefinition对象数组,每个对象都有一个#name#columns方法.