約束の地

キャロ組

Rails のマイグレーションでエラーが出てハマったときに調べるところ

大原則

データベースを直接いじってはいけない。マイグレーション(ファイル)経由で変更する。

調べる(やる)こと

具体例は出さないので、詳細は各自で掘ってください。以下の記述の順番には意味はありません。

エラーメッセージを読む

ある意味これだけで全て完結するのですが……。とにかくエラーメッセージを読みましょう。全てはそれからです。

db:migrate:status をする

$ rails db:migrate:status を実行してマイグレーションの進行状況をチェックします。もし Migration Name********** NO FILE ********** と出た場合は対処が必要です。

以下の記事が参考になります。

データベース内の schema_migrations というテーブルを見る

データベース内に schema_migrations というテーブルがあるのでそこを見ます。実行された Migration ID が並んでいます。

マイグレーションファイルをチェックする

ある程度「あたり」がついたらマイグレーションファイルをチェックし、データベースや上記の情報と照合します。マイグレーションファイルを書き換えるのは危険ですが、特殊な場合にはありかと思います*1

慌てない

あのエラーメッセージがガーッと出ると焦ってしまって目に見えるエラー内容を潰そうとして DB を直接いじる愚行を犯しがちですが*2、慌てないで一つ一つ調べたほうがいいです。そしてそういう事態を想定して Capistrano を使うなどしてサービスの停止は避けましょう。

*1:手動でカラムをいじったときなど……

*2:昔はよくやった……

Powered by はてなブログ