0

私のマイグレーションファイルの1つは、マイグレーションシーケンスのさらに下に作成される別のテーブル/モデルを参照しています。マイグレーションファイルのタイムスタンプの並べ替え/変更

Postgresはそれを好きではない:

PG::UndefinedTable: ERROR: relation "users" does not exist

手動(新しいタイムスタンプ/プレフィックスを発明して)移行ファイルを並べ替えるために、潜在的な問題があるのであれば、私は疑問に思いますか?

影響を受けるテーブルはすでに移行されています。

答えて

2

rake db:migrateコマンドを実行すると、db/migrateフォルダにあるschema_migrationsテーブルと移行ファイルが比較されます。実行されなかったすべての移行では、MigrationClass#upが呼び出されます。

コードが既に公開されてから、他のユーザーによって移行が実行された時点から、移行のタイムスタンプ/名前を変更すると、処理できない移行手順が発生する可能性があります(schema_migrationsは、処理されていないものを処理し、再度処理しようとします)。可能な回避策は、しばらくの間、upメソッドの内容にコメントを付け、移行が完了した後でコメントを外すことです。楽しいために、schema_migrationsテーブルをdbコンソールから直接操作することもできます(必要なレコードの追加または削除)。どちらの方法もハックのような匂いがする。

それまで...すべてが完璧に動作するはずです。

関連する問題