私はレールを学び始めたばかりで、MichaelHartlの「LearnRailsby Example」を読んだ後、いくつかの同様の機能を備えた独自の単純なアプリケーションを作成しようと決心しました。いくつかの異なる移行を行い、それらを正常に実行した後、4列のインデックスをテーブルに追加しようとしました。「bundleexecrakedb: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」を再実行すると、同じエラーが発生しました。これはおかしいと思ったので、移行からインデックス行を完全に削除し、移行をそのままにして新しいテーブルを作成してみました。もう一度試してみましたが、同じエラーが発生していました。次に、移行ファイルを削除し、まったく新しい移行を生成しようとしましたが、それでも同じエラーが発生しました。
私がこのプロジェクトを進めるのを防ぐために、この幻の移行を本当に嫌います。過去の過ちを忘れさせて、新しい過ちを作る方法を知っている人はいますか?