1

私はレールを学び始めたばかりで、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」を再実行すると、同じエラーが発生しました。これはおかしいと思ったので、移行からインデックス行を完全に削除し、移行をそのままにして新しいテーブルを作成してみました。もう一度試してみましたが、同じエラーが発生していました。次に、移行ファイルを削除し、まったく新しい移行を生成しようとしましたが、それでも同じエラーが発生しました。

私がこのプロジェクトを進めるのを防ぐために、この幻の移行を本当に嫌います。過去の過ちを忘れさせて、新しい過ちを作る方法を知っている人はいますか?

4

1 に答える 1

0

データベースをリセットするにはrake db:drop、、、rake db:createすべてrake:db:migrateの移行を最初から実行します。

これは本番環境での解決策ではありませんが、学習するには十分です。

于 2012-12-14T03:16:47.870 に答える