4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

カラムの追加、削除の方法と間違ったマイグレーションを作ってしまった時の対処法。

Last updated at Posted at 2020-03-17

よくカラムの追加や削除をするのに、その度にやり方を忘れて毎回いろんな記事を検索してしまってるので、備忘録として記事にしました。

#カラムの追加方法

$ rails g migration Addカラム名To追加先テーブル名 追加するカラム名:型
↓↓↓↓↓↓↓↓(例)
% rails g migration AddPrefectureToItems prefecture:references

書き方はキャメルケースで書きます。「SampleHogeHuga」のように単語の頭文字を大文字にすることで単語を区切ります。

#カラムの消し方
基本的には、
rails g migration Removeカラム名From削除元テーブル名 削除するカラム名:型
を使った方が良いと思います。
しかし、自分の場合、なぜかうまくrails db:migrateが実行できない事が多かったので、直接MySQLテーブルを操作する方法で削除しました。
#SQL文で指定したカラムを消す方法
まず、$ mysql -u rootでmysqlに接続。
$ SHOW DATABASES;で指定するデータベースを探す。
$ USE データベース名;でデーターベースを指定する。
$ SHOW TABLES;でテーブルを探す。
$ ALTER TABLE テーブル名 DROP カラム名;で指定したカラムを削除。
↓↓↓↓↓↓↓↓(例)
$ ALTER TABLE goods DROP stock;

#間違ったマイグレーションファイルを作ってしまった時の対処法
まずは、マイグレーションファイルの状況確認。
$ bundle exec rake db:migrate:status
スクリーンショット 2020-03-17 9.29.57.png
左端が「down」になってるファイルは消せますよ〜という意味。
$ rails db:rollbackで一個手前のファイルをダウン状態にできる。
$ rails db:rollback STEP=○で現在地を含めた○個前までdown状態にできます。(つまり○+1個前のファイルまで実行された状態)
$ rm -rf db/migrate/マイグレーションファイル名でマイグレーションファイルを削除。

$ bundle exec rake db:migrate:statusで確認。
スクリーンショット 2020-03-17 9.40.17.png
削除成功!

※本来は最新のマイグレーションから順番に消していく方がいいです。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?