2012-12-14 38 views
1

我剛剛開始學習rails,並且在通過Michael Hartl的「通過示例學習Rails」之後,我決定嘗試使用一些類似功能創建自己的簡單應用程序。在做了幾次不同的遷移併成功運行之後,我嘗試在表中添加一個四列索引。當我跑了「捆綁高管耙分貝:遷移」我得到了錯誤:舊遷移錯誤阻止我創建新的數據庫更改

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

你的db/migrate目錄中還有其他文件嗎? –

回答

0

要重置您的數據庫,我會做rake db:drop,rake db:create,rake:db:migrate從頭開始運行所有遷移。

這不是生產中的解決方案,但足夠學習。

+0

奇怪的是,即使完全刪除遷移後,我仍然看到了錯誤。無論如何,運行db:drop,db:create,db:migrate似乎已經成功了。謝謝! – user1902853

+0

聽起來不錯。如果我的答案有效(我也更新了一下),請隨時接受upvote和/或接受答案(大號複選標記)。 –