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

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

関連記事

basscss v8以降にv7以前のスタイルを追加する(自分用メモ)

概要 みなさんこんにちはcandleです。今回はbasscssのv8でかなりデフォルトのスタイルから削除されてしまったスタイルをインポートします。 v7以降からbasscssのスタイルはかなり分割され …

react-modalを利用してモーダルを作成するチュートリアル

概要 みなさんこんにちはcandleです。今回はreact-modalを使ってモーダルを作ってみたいと思います。 react-modalはreactで簡単にモーダルを取り扱えるライブラリです。 しかし …

wordpressのbogoプラグインのショートコードをカスタマイズする

English 日本語 概要 みなさんこんにちはcandleです。 今回はwordpress bogoのショートコードをカスタマイズしてみたいと思います。 紹介する項目は以下の2つです。 国旗の表示、 …

React WebでURLをaタグのリンクにして表示する

概要 みなさんこんにちはcandleです。今回はReactでコメントなどに投稿されたURLからリンクを生成する方法を紹介します。しかし、URLからリンクの自動生成は結構危険です。無尽蔵にリンク化を許可 …

gitpythonでfirst commitする

概要 みなさんこんにちはcandleです。今回はgitpythonで、初めてのコミットをする方法を紹介します。 gitpythonでコミットは難しくないのですが、初めてのコミットは要領が違ったので、ま …

  • English
  • 日本語

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