无法从Rails 4和PSQL 9.3中的表中删除索引

Ale*_*pov 6 ruby migration ruby-on-rails database-indexes rails-postgresql

在我的schema.rb中,我有以下行:

add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree
Run Code Online (Sandbox Code Playgroud)

当我\di在psql中运行时,我得到:

Schema |                             Name                             | Type  | Owner |         Table
--------+--------------------------------------------------------------+-------+-------+-----------------------
 public | index_users_on_email                                         | index | alex  | users
Run Code Online (Sandbox Code Playgroud)

但是,如果我在迁移中包含以下内容之一:

  • remove_index:users,name :: index_users_on_email
  • remove_index:users,column :: email
  • remove_index:users,:email
  • 执行'DROP INDEX index_users_on_email'

我收到以下错误:

rake aborted!
An error has occurred, this and all later migrations canceled:

Index name 'index_users_on_email' on table 'users' does not exist
Run Code Online (Sandbox Code Playgroud)

我也发现了这个问题.那么任何想法?

log*_*son 8

我知道这很晚才到,但我遇到了类似的事情.在尝试删除索引之前,您是否有可能重命名为"电子邮件"列?如果是这样,通过重命名列,索引将被删除.所以订单必须是:

1)删除索引2)重命名列


Chr*_*hol 7

如果要按名称删除索引,可以这样写:

remove_index(:table_name, :name => 'index_name')
Run Code Online (Sandbox Code Playgroud)

你也应该看一下这个问题:Rails 3.1.0迁移中remove_index的正确语法是什么?