1

我刚刚开始学习 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'

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

我真的很讨厌这种幻影迁移来阻止我继续这个项目。有谁知道我怎样才能让它忘记我过去的错误,以便我可以犯一些新的错误?

4

1 回答 1

0

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

这不是生产中的解决方案,但对于学习来说已经足够了。

于 2012-12-14T03:16:47.870 回答