铁杆新手,有一些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相关的更少。
答案 0 :(得分:0)
找到了很多信息at this other question。我最终是正确的,因为它与git有关。完全不确定为什么我的删除文件的提交没有在Heroku上发生。我最终做了一个git rm commitname,然后heroku push -f到我的存储库。它终于采取了这一点。