0
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.

db:migrateのやり直し

Last updated at Posted at 2020-08-18

#db:migtateのやり直り方法

マイグレートしたファイルを削除する(やり直しをかける)

terminal
$ rails db:migrate:down VERSION=[time stamp]
$ rmi -rf [time stamp]_***.rb

#migrate_***.rbへ追記方法

作成したカラムを修正したい時は、(1)defメソッドをupとdownを用意する。(2)change_columnに追記したいコードを入力する。(3)downの中に、remove_columnを用意して、元々のadd_columnを記述する。

日付_add_username_to_users.rb(修正前)
class AddUsernameToUsers < ActiveRecord::Migration[6.0]
  def change
    add_column :users, :username, :string #ここにnull: false, default: ""を加えたい。
  end
end
日付_add_username_to_users.rb(修正後)
class AddUsernameToUsers < ActiveRecord::Migration[6.0]
  def up
    change_column :users, :username, :string, null: false, default: ""
    add_column :users, :username, :string
  end
  
  def down
    remove_column :users, :username, :string
  end
end

終わり。

#もし、db:migrate:downさせる前にマイグレーションファイルを削除してしまっていた場合
設定等が残ってしまうため、同じタイムスタンプのファイルを作成する必要がある

まずは、マイグレーションの状況を見て、何がup状態か確認する
やらかしている時は、下記のようなNO FILEがいる

terminal
$ rails db:migrate:status

Status   Migration ID    Migration Name
--------------------------------------------------
   up     20200817055815  Devise create users
   up     20200817065100  Add name to users
   up     20200817102227  Create rooms
   up     20200817104106  Create entries
   up     20200818043808  ********** NO FILE **********

こうなっていた場合は、NO FILEのID(20200818043808)を元に、
簡易なマイグレーションファイルを作成する
(変にスペルミスしないように注意!、私は大文字小文字の打ち間違えで、エラー起こした。照り)

terminal
$ vim db/migrate/20200818043808_tmp.rb

class Tmp < ActiveRecord::Migration
	def change
	end
end

念のため、statusでNO FILEがTmpに変わっていることを確認。(割愛)

terminal
$ rails db:migrate:status

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20200817055815  Devise create users
   up     20200817065100  Add name to users
   up     20200817102227  Create rooms
   up     20200817104106  Create entries
   up     20200818043808  Tmp

確認してできたら、上記の通りdownさせて、削除して終わり!

teminal
$ rails db:migrate:down VERSION=20200818043808
$ rm -rf 20200818043808_tmp.rb

終わり

参考にさせていただいた記事
https://qiita.com/gita/items/2198e2961a9fc7d10bd2

誤った理解をしていればご指摘いただければ幸いです。

0
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
0
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?