0
0

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.

rails db:migrateエラー

Posted at

rails g migration ChangeSampleNameNotNullでNotNull制約を追加するファイルを作成しました。

class ChangeSampleNameNotNull < ActiveRecord::Migration[5.2]
  def change
    change_column_null :Sample, :name, false
  end
end

追加したファイルの中身を編集しrails db:migrateしようとするとエラー
#エラーの原因?
前に行ったコマンドのmigrationで何らかの手違いがあると思います。おそらく、migration処理の途中からエラーが起きていて、テーブルは生成されているが、テーブルを生成したmigrationは未実行のまま。といった状態なのかな?と思います

#解決法

$rails db:migrate:reset

リセットする前に「これリセットする必要あるかな?なんか違う方法ないか???」と考えた結果まずは、dbのステータスを見てみようと思い↓実行してみました

$rails db:migrate:status

どうやら、一番下のマイグレーションファイルが怪しい。。。
エディタを確認したところ
同じマイグレーションファイルを二回作成していました。。
なので、一番下のマイグレーションファイルを削除してみます。
※downの状態だったら、手動でファイルを削除しても問題ない

Status   Migration ID    Migration Name
--------------------------------------------------
  up    20210323042143  Create posts
  down  20210323042144  Change sample text not null

↓のコマンドで削除

rm db/migrate/20210323123633_change_sample_text_not_null.rb 

これで問題なくマイグレートできる??

あ〜〜またエラーダァ!!!

NoMethodError: undefined method `null=' for nil:NilClassと出てきたけど余裕だった
change_column_null テーブル名 カラム名 false のカラム名を間違えただけだった。しっかり確認しよう。

#最後に
いや〜沼った沼った…これからはこうゆうことがなるべく起こらない様に気をつけなきゃな〜。

#補足
ActiveRecord::UnknownMigrationVersionErrorが出た時はこの方の参照
https://qiita.com/shellingford/items/d244c4bd61b2724f713e

rails:db:rollbackとbundle exec rake db:migrate:down VERSION=

Status   Migration ID    Migration Name
--------------------------------------------------
  up    20210323042143  Create posts
  up  20210323042144  Change sample text not null
  up  20210323042142  ~~~~~~~~~~~sample2

上から2つ目の奴をupからdownにさせたい…こうゆう時はbundle exec rake db:migrate:down VERSION=
(要は複数マイグレーションファイルがある場合。)
https://qiita.com/usizou/items/6dcdea46ec0b4a89c661

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?