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?

rails g migrationでテーブルにカラム追加時に失敗したときの対処法

Posted at

スクール受講開始から2週目に突入しました。
Ruby on Railsの基礎的なところを学んでいる段階です。

ターミナルから以下のコマンドで、データベースのテーブルにカラムを追加する方法を学び、自分のテスト環境で試した際に、タイプミスがありエラーが発生してしまいました。

# 既存のDBテーブルにカラム追加
$ rails g migration Addカラム名To追加先テーブル名 追加するカラム名:
# 実際に実行したコマンド(誤り)
$ rails g migration AddNicknametoUsers nickname:string
# 正しくはこちら
$ rails g migration AddNicknameToUsers nickname:string

テーブルのカラムを確認すると、当然追加されていませんが、エラーも特に出ていなかったので、最初は原因がわからず生成されたmigrationファイルを確認し、Toがtoになってしまっていることが判明。
rails db:rollbackでロールバックさせ、ファイルの中身を修正し、再度rails db:migrateしてみましたが、今度は以下のエラーが発生してしまう。

bin/rails aborted!
NameError: uninitialized constant AddNicknametoUsers (NameError)

      Object.const_get(camel_cased_word)
            ^^^^^^^^^^
Did you mean?  AddNicknameToUsers


Caused by:
NameError: uninitialized constant AddNicknametoUsers (NameError)

      Object.const_get(camel_cased_word)
            ^^^^^^^^^^
Did you mean?  AddNicknameToUsers

Tasks: TOP => db:migrate
(See full trace by running task with --trace)

修正したはずが・・・と思い、再度眺めていたところ、ファイル名が'20250514090656_add_nicknameto_users.rb'となっているのに気が付き、こちらも修正してみました。
残念ながらエラーは解消されませんでした。

次に試したのはロールバックして、該当のmigrationファイル削除して、やり直せばいいのでは?と思い立ち、やってみました。

$ rails db:migrate:status

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20250513091538  Create tweets
   up     20250514080656  Devise create users
  down    20250514090656  Add nickname to users

$ rm db/migrate/20250514090656_add_nickname_to_users.rb 
$ rails db:migrate:status

database: pictweet_development

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20250513091538  Create tweets
   up     20250514080656  Devise create users

無事に消えました!

そして再度今度はタイプミスしないように気をつけて実行

$ rails g migration AddNicknameToUsers nickname:string

サーバーを立ち上げ、テーブルの中身にnicknameが無事追加されていることが確認できました!

参考にした記事:
【Rails】特定のマイグレーションファイルをロールバックして削除する方法 

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?