我刚开始学习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”并得到了同样的错误。我认为这很奇怪,所以我尝试完全从迁移中删除索引行,让迁移只是创建新表。我再次尝试,仍然得到同样的错误。然后我删除了迁移文件,尝试生成一个全新的迁移,但我仍然遇到了同样的错误。
我真的很讨厌这个虚幻的迁移,以防止我继续这个项目。有谁知道我怎么能忘记我过去的错误,以便我可以做一些新的错误?
答案 0 :(得分:0)
要重置数据库,我会rake db:drop
,rake db:create
,rake:db:migrate
从头开始运行所有迁移。
这不是生产中的解决方案,但足以学习。