46

私は最初のRailsアプリを書いています。いくつかrails generate model ...rake db:migrateコマンドを実行しましたが、データモデルを変更したいので、いくつかの移行を元に戻す必要があります。

ドキュメントには、で移行を元に戻すことができると書かれていrake db:rollbackますが、これは機能していません。db/migrate/これをコンソールで実行すると、コンピューターは数秒間考えますが、またはに変更を加えませんdb/migrate/schema.rb。コンソールに出力は出力されません。

この動作は正しいですか?db:rollbackスキーマを変更するべきではありませんか?もしそうなら、なぜそれが機能しないのか誰かが考えることができますか?

私はRailsv。3.2.6を使用しています。

編集

現時点でrake db:migrate:status

database: db/development.sqlite3

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20120617191211  Create irs
   up     20120701154357  Create paths
   up     20120701154421  Create nodes
   up     20120702151447  ********** NO FILE **********
  down    20120702155140  Create venues
  down    20120703233833  Remove path from venues
4

4 に答える 4

72

解決策(私のコメントを参照):実行

rake db:migrate:status

そこで見つかった問題を修正します。この場合 (@MarkThomas のフォローアップによる)、必要なすべてのファイルが配置されていることを確認することをお勧めします。

于 2012-07-04T00:13:37.507 に答える
1

注:推奨事項は慎重に使用してください。非開発環境では非常に危険です。


もしも

rake db:migrate:status

と言う移行を提供します

up 20120702151447 ********** NO FILE **********

次に、実行するのが最善の方法です (次のコマンドはデータベースを削除することに注意してください)。

rake db:reset

すべての移行をやり直します。最後の移行が欠落している場合、次を探すschema.rb最後の移行があります。rake db:migrate

ActiveRecord::Schema.define(:version => 20120702151447) do

その番号を移行フォルダーの最後の番号に変更します。

于 2013-06-27T23:40:36.840 に答える