新的铁轨和一些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
我很茫然。好像在爆发后,删除一个字段还可以删除该领域的任何索引。这可能不会在Sqllite中发生,因此我的本地环境为何工作,但Heroku断断续续(只是一个猜测)。我已经尝试删除删除索引的迁移,希望避免此问题,我已经犯下了更改,并将其推向了Heroku。但是我仍然遇到相同的错误,当我克隆回购时,迁移仍然存在。也许这与git有关,较少的轨道相关。
在另一个问题上找到了很多信息。我最终是正确的,因为这与git有关。完全不确定为什么我的承诺会删除文件,而不是在Heroku上进行的。我最终做了一个git rm commitname,然后将heroku推到我的存储库。终于在这一点上花了。