1

移行を新しく実行して実行すると、エラーが発生しました。

$ rake db:migrate
== CreateEReadings:migrating ======================================== ========
--create_table(:e_readings)rakeが中止されました!エラーが発生しました。これ以降のすべての移行はキャンセルされました。

SQLite3 :: SQLException:テーブル"e_readings"はすでに存在します

このe_readingsは、移行を使用して作成した最後のテーブルです。

移行ファイル名は:20120508145115_create_e_readings.rbです。

そしてdb/schema.rbのバージョンは:

:バージョン=> 20120508145115

レールは、私がすでにこの移行を実行して再生しようとしたことを忘れているようです。そのため、エラーが発生しましたが、なぜこれが発生し、どうすればこれを解決できますか?

4

3 に答える 3

3

以前に実行したことがあり、何らかの理由でテーブルを作成した後に失敗したようです。すでに実行されていることが確実な場合は、バージョンとして20120508145115を使用して「schema_migrations」テーブルにレコードを手動で追加できます。

これが単なる開発環境であり、それを吹き飛ばしてもかまわない場合は、実行することもできrake db:resetます。これにより、スキーマが削除、作成、ロードされ、再シードされます。

于 2012-06-16T12:22:27.680 に答える
1

ビールリントンは正しいと思います。初めて実行したときに、移行が失敗した可能性があります。彼の提案に加えて、データベースからテーブルを手動で削除し、移行を再実行して、最初に何がうまくいかなかったかを確認することもできます。

于 2012-06-16T12:35:04.040 に答える
1

BeerlingtonとAndyの両方に同意します。開発環境の場合は、ターミナルで次のことを試してください。

rake db:drop
rake db:create
rake db:migrate

これにより、データベースが破棄され、再作成され、すべての移行が実行されます。

もう1つ試すことができるのはrake db:rollback、この移行(またはその前の移行)がロールバックされたことを確認するまでを使用してロールバックしrake db:migrate、その時点から最新の時点まで実行して再度実行することです。rake db:rollback一度に1つの移行ファイルをロールバックします。

ただし、面白いものが何も残っていないことを確認するために、ドロップして再作成します。

お役に立てれば。

于 2012-06-16T12:50:08.080 に答える