VERSION=xxxはRails上のスキーマバージョンが古いと実行されないRuby問題と原因Rails3.1のマイグレーションでちょっとハマったのでメモしておきます。VERSION=20120324025500のような形で実行できます。VERSIONで指定したバージョンがRailsが管理している現在のスキーマのバージョンよりも新しいと何も実行されないようです。単純な例を示すとこんな感じです。VERSION=2(何も起きない)$上の例では現在のバージョン(=1)よりもdownで指定したバージョン(=2)の方が新しいので何も実行されません。VERSIONを指定すれば強制的に実行できると思っていたのですが、実際そうではありませんでした。普通に使っているとそういうことは起きないんでしょうが、僕の場合マイグレーションの途中でエラーが出たりしたせいか、DBのスキーマとRailsが管理しているスキーマのバージョンがズレてしまいました。その時の状況を単純化するとこんな感じです。VERSION=2」では何も起きません。db:migrate」しても「列名が重複しているのでエラー」と怒られるだけでした。仕方がないので苦肉の策でRailsをダマすことにしました。db:migrate」を実行します。するとRailsが管理しているバージョンだけが2に上がります。foo列は存在したままです。続いてさっきのコメントを外します。endendここで終わっても理屈的には問題ないのですが、念のためマイグレーションが正しく動作するか確認しておきます。db:migrate:redoこれでエラーなく列の削除と追加が実行できていれば成功です。Railsと実際のDBのバージョンがズレてしまった場合に参考にしてみてください。6が正式にリリースされました。はてなブログPro株式会社ソニックガーデンで働くRubyプログラマ。2017年11月に「プロを目指す人のためのRuby入門」を出版。blog)はてなブログをはじめよう!JunichiItoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。