旧的迁移错误阻止我进行新的DB更改

时间:2012-12-14 03:13:51

标签: ruby-on-rails activerecord

我刚开始学习rails,在浏览了Michael Hartl的“通过示例学习Rails”之后,我决定尝试创建一个具有类似功能的简单应用程序。在进行了一些不同的迁移并成功运行它之后,我尝试向表中添加一个四列索引。当我运行“bundle exec rake db:migrate”时,我收到了错误:

Index name 'temp_index_altered_events_on_user_id_and_message_id_and_date_and_address_id'      
on table 'altered_events' is too long; the limit is 64 characters

我查找了该错误的原因并更改了我的迁移使用:

add_index :events, ["user_id", "message_id", "date", "address_id"], :unique => true, :name => 'my_index'

然后我重新“捆绑exec rake db:migrate”并得到了同样的错误。我认为这很奇怪,所以我尝试完全从迁移中删除索引行,让迁移只是创建新表。我再次尝试,仍然得到同样的错误。然后我删除了迁移文件,尝试生成一个全新的迁移,但我仍然遇到了同样的错误。

我真的很讨厌这个虚幻的迁移,以防止我继续这个项目。有谁知道我怎么能忘记我过去的错误,以便我可以做一些新的错误?

1 个答案:

答案 0 :(得分:0)

要重置数据库,我会rake db:droprake db:createrake:db:migrate从头开始运行所有迁移。

这不是生产中的解决方案,但足以学习。