元の問題は、一部の移行ファイルが最初にマシン (実稼働など) で実行されたことです。その後、いくつかの移行が何らかの形で削除され、復元できませんでした。
そのため、アプリを使用して新しいマシンを稼働させるには、不足している移行を手動で再作成する必要がありました。
したがって、削除された移行を既に実行したマシンは、これらのエラーをスローしています。
PG::Error: ERROR: relation "some_relation" already exists
db:reset
そのデータを失うことができないため、本番環境でデータベースだけを使用することはできません。
実行すると、rake db:test:prepare
次のようなものが表示されます。
You have 4 pending migrations:
20130112203055 CreateSomeTable
20130113180203 AddSomeColumnToTable
20130113204017 ChangeSomeOtherColumns
20130311203729 CreateAnotherTable
Run `rake db:migrate` to update your database then try again.
明らかに、実行db:migrate
すると上記のように PG::Error が返されます。問題は、削除された移行によってスキーマの変更が既に完了していることです。上記の「保留中」の移行は、事後に再作成する必要がありました。
これを修正してdb:migrate
再び機能する方法はありますか?