Small Changes

rails db:migrateでスキーマの順番が変わる問題でやったこと



rails db:migrateを行うと、schema.rbのカラム順が変わる問題が発生したときにやったことのメモです。

DBはPostgreSQLを使い、annotateというモデルのスキーマ情報をファイルにコメントとして書き出してくれるgemを使っています。

作業メモ

マイグレーションファイルを1つ追加する(この時点で未実行のマイグレーションファイルは1つだけ)。

rails db:migrate

今回追加した以外の箇所もスキーマが更新されてしまった(カラム順が変わっている)。

一からマイグレーションしなおしてみる。

rails db:migrate:reset

上記でannotateはうまくいったけど、やっぱり今回追加した以外の箇所もスキーマが更新されてしまった。

一旦、差分が出たschema.rbの変更分は元の状態に戻して、db:resetを行う。

rails db:reset

db:resetはschema.rbを正としてテーブルを再作成するので、スキーマはこの時点では変化なし。

再度、db:migrateで未実行のマイグレーションのみ実行すると、未実行のマイグレーション箇所のみスキーマが更新された!

rails db:migrate

References