Heroku db:迁移错误,删除了索引

时间:2014-02-04 15:49:43

标签: ruby-on-rails git heroku

铁杆新手,有一些Heroku麻烦。我创建了一个表并带有索引。我需要更改字段名称,自然索引会随之而来。所以我创建了三个迁移,一个用于删除字段,另一个用于删除索引,最后一个用于添加两个。我的计算机在处理此迁移时没有问题,但Heroku失败了。

我尝试将迁移#1和#2合并到一次迁移中,但没有运气。

Index name 'index_updateresults_on_env_id_and_created_at' on table 'updateresults' does not exist/app/vendor/bundle/ruby/2.1.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract/schema_statements.rb:825:in `index_name_for_remove'

编辑: 也可以添加我的迁移。

class CreateUpdateresults < ActiveRecord::Migration
  def change
    create_table :updateresults do |t|
      t.string :content
      t.integer :env_id

      t.timestamps
    end
    add_index :updateresults, [:env_id, :created_at]
  end
end

class RemoveEnvIdFromUpdateresults < ActiveRecord::Migration
  def change
    remove_column :updateresults, :env_id, :string
    remove_index :updateresults, [:env_id, :created_at]
  end
end

class AddEnvNameToUpdateresults < ActiveRecord::Migration
  def change
    add_column :updateresults, :env_name, :string
    add_index :updateresults, [:env_name, :created_at]
  end
end

修改2

我很茫然。好像在Postgre中,删除字段也会删除该字段上的所有索引。这可能不会发生在SqlLite中,因此为什么我的本地环境可以工作但是Heroku中断(只是一个猜测)。我已经尝试删除删除索引的迁移,希望避免这个问题,我已经提交了更改,并将其推送到Heroku。然而,我仍然得到同样的错误,当我克隆回购时,迁移仍然存在。也许这与Git有关,而与Rails相关的更少。

1 个答案:

答案 0 :(得分:0)

找到了很多信息at this other question。我最终是正确的,因为它与git有关。完全不确定为什么我的删除文件的提交没有在Heroku上发生。我最终做了一个git rm commitname,然后heroku push -f到我的存储库。它终于采取了这一点。