header image
header image

Rails migration | 通らないmigration をスキップする | down upの変更方法

Rails  migration |  通らないmigration をスキップする | down upの変更方法

 

rails ではマイグレーションコードを gitで保管して、DBの変更履歴を残していたり するのですが、 たまーーに migrationコードを実行せずにSQLで直接 DBを変更する輩がいます。

 

そんな時に

rails db:migrate

としようものなら、 「そんなカラムはalreadyで存在するぜ」 とか 「そんなカラムないけどちゃんと確認して」 と怒られることがあります。

 

いらないマイグレーションコードだとわかっていれば すぐにファイルを削除してしまえばいいのですが、 そうもできない時があります。

 

そんな時に、実際は実行してないけど スキップする方法を探していたのですが。。。 ありました方法は簡単です。

 

スキップしたいバージョン番号のレコード をschema_migrationテーブルに追加する

です。

 

これで、migrateがupの状態になり、 次から実行されることはありません。

railsのマイグレーションはどうやら、 schema_migrationというテーブルで migrationの実行有無( rake db:migrate:statusで見れるやつ ) を管理しているようですね。

バージョン番号というのは rails gすると勝手に先頭に付加される数字です

) 20170310XXXXXX_create_user.rb

また逆も然りで、 再度migrationコードを実行したい場合は 対象のレコードを削除してあげます。

試してみてください!!