joppot

コピペで絶対動く。説明を妥協しない

プログラミング

railsのrakeのmigrationファイルを削除しNO FILEとstatusに出た時の対処

投稿日:


file543f0460e1490

概要

みなさんこんにちはcandleです。今回は誤ってデータベースに反映したマイグレーションファイルを不要だと思って削除した時に、NO FILEと出てきてしまった時の対処です。

言うなれば、下のような状態になった時にどうやってNO FILEの履歴を消すかです。
checknofile


前提

railsの環境が整っている



消したいマイグレーションフィアルのIDを調べる

まずは消したいマイグレーションIDを調べます。
下のコマンドをrailsプロジェクトの中で実行しましょう。

bundle exec rake db:migrate:status

targetid

私の場合、消したいmigration IDは「20141013154137」です。

上の図を見てもらうと分かるように、Statusが NO FILE となっているマイグレーションもupになっていますよね。ということはデータベースはこのマイグレーションファイルの構造を取り入れているということです。

もしかすると、実際は手動でMysqlのカラムを削除したり、あるいわ。カラムを使っていないからマイグレーションファイルを削除したのかもしれませんが。

これをひとまずdown、つまりマイグレーションファイルがデータベースに対して非アクティブにならない限りは話にならないので、そのmigration IDのマイグレーションファイルを作ります。


マイグレーションファイルを作る

rails プロジェクトの db/migrationに移動します。

cd db/migration

そこで先ほど確認したNO FILEのmigration IDのマイグレーションファイルを作ります。
一般に下の様に作ると良いでしょう。

touch マイグレーションID_tmp.rb

私の場合ですと

touch  20141013154137_tmp.rb

touch20141013154137file

次に、作成したファイルをエディタで開きます。私はemacsを使いますが、なんでも良いでしょう。

emacs  20141013154137_tmp.rb

下の内容を書き込みます。


class Tmp < ActiveRecord::Migration
  def change
  end
end

保存しましょう。

ファイルの作成ができました。

マイグレーションファイルを削除する

下のコマンドでもう一度マイグレーションを確認します。

bundle exec rake db:migrate:status

migrationtmpfile

今作成したマイグレーションファイルをupからdown状態にします。

一般に下のコマンドでdown状態にします。

bundle exec rake db:migrate:down VERSION=マイグレーションID

私の場合は

bundle exec rake db:migrate:down VERSION=20141013154137

ですね。

downcommandver

ステータスがdownになっているのを確認して

bundle exec rake db:migrate:status

2014statusdown

downを確認したら、マイグレーションファイルを削除します。

私の場合は

rm db/migrate/20141013154137_tmp.rb

です。

rmdownmigrationfile

statusを確認してみます。

bundle exec rake db:migrate:status

vanishedtmpsection

うまくいきましたね。

まとめ

NO FILEと出る前に、任意のマイグレーションファイルをダウンさせてからrmするようにしましょう。

スポンサードリンク

「為になったなぁ」と思ったら、シェアお願いします。

-プログラミング
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

ruby on railsのckeditorの画像のアップロード先をcarrierwaveとfogを使ってS3にする

概要 railsのckeditorはデフォルトでrailsのuploadsフォルダにアップロードしますが、 それだとサーバの容量を取ってしまうので、画像のアップロード先をS3に上げてみたいと思います。 …

reactで最もシンプルなドロップダウンメニューを作成

概要 みなさんこんにちはcandleです。今回はreactで最もシンプルなドロップダウンメニューを作ってみたいと思います。 前提 Reactの知識がある 準備 以下のコマンドでreactプロジェクトを …

wordpressで任意のサブカテゴリー全てをget_categoriesで取得する

概要 みなさんこんにちはcandleです。今回はwordpress開発でよくあるサブカテゴリーを全て取得する方法を紹介します。 カテゴリー一覧をサイドバーに表示したい時があります。この時、get_ca …

railsのrakeで作成したmigrationファイルとstatus履歴を削除する

概要 みなさんこんにちはcandleです。今回はrakeコマンドで作成したマイグレーションファイルの管理を紹介します。rakeコマンドを使っていると、よくよく考えれば必要の無いファイルがある。とか重複 …

react-modalの背面のスクロールを固定する

概要 みなさんこんにちはcandleです。今回はreact-modalの背面がスクロールした時に動いてしまう問題を解決してみたいと思います。 前提 reactの知識がある 完成版のサンプルコード サン …

  • English
  • 日本語

ベンチャー企業のCTOをやってます。大学時代にプログラミングを始め、javaから入門し、C++へて、PHPへと進み、会社ではRailsを使用。自動化が大好きなプログラマー