2

私は実行rake db:migrateしましたが、すべての移行が実行されました。ただし、実行しようとするrake db:test:prepareと、次のエラーが表示されます。

You have 1 pending migrations:
  20130724211328 CreateGalleries
Run `rake db:migrate` to update your database then try again.

その後rake db:migrate、再度実行するとエラーが発生します。

PG::Error: ERROR:  relation "galleries" already exists...

ただし、コンソールでは、CreateGalleries の移行で示したとおりに、Gallery モデルを作成および操作できます。テーブルは作成されておらず、他の移行でも言及されていません。

移行は問題なく実行されたようですが、登録されませんでした。これを修正する方法はありますか?

編集

私はこれをrake db:drop db:create db:migratethenrake db:test:prepareで解決しましたが、そもそも問題の原因を明らかにできる人に解決策を提供できることをうれしく思います。

4

1 に答える 1

1

ギャラリーの移行が適切に実行されていない可能性があります。すべてがテーブルに正しくあることを 100% 確信している場合は、移行バージョンをギャラリー移行のバージョンに上げることができます。

これを行うには、ギャラリーの移行のタイムスタンプ (移行ファイルの前にある 14 個の数字、この場合は20130724211328) を見つけて、これを新しい行としてテーブルに挿入しますschema_migrations(これは、移行が正常に実行された後に Rails によって自動的に行われます)。

テーブルが空の場合は、テーブルを削除して再度galleries実行することもできますrake db:migrate。このようにして、移行によってエラーが発生しないことを確認することもできます。

于 2013-07-30T13:53:45.710 に答える