はじめに
プログラミングを勉強して3か月ほどです。
プログラミングスクールを卒業し、現在就職活動をしています。
今回はオリジナルアプリ作成時に発生したエラーで苦戦したので、その対処方法を共有したいと思います。
※@mogya(daisuke furukawa)さんの記事を参考にさせていただきました。
今回のエラー内容
今回発生したエラーはrails db:migrateができなくなるエラーです。
rails db:migrateを実行するとターミナルに以下のエラーログが表示されました。
私が実行しようとしているテーブルは存在していると表示されています。
また、rails db:migrate:statusを使ってマイグレーションファイルの実行状態を確認したところ、実行されていないことが示されていました。
エラー原因(おそらく)
私はマイグレーションファイルに下記のような記述をしました。
class CreateNotifications < ActiveRecord::Migration[7.0]
def change
create_table :notifications do |t|
t.integer :visitor_id, null: false
t.integer :visited_id, null: false
t.references :room, null: false, foreign_key: true
t.string :action, default: '', null: false
t.boolean :checked, default: false, null: false
t.timestamps
end
add_index :notifications, :visitor_id
add_index :notifications, :visited_id
add_index :notifications, :room_id
end
end
私はadd_indexの記述を初めて見よう見まねで使ってみました。
しかし、その記述方法に間違いがあったことにより今回のエラーが発生しました。
エラー対処方法
一度マイグレーションファイルの内容をコメントアウトします。
class CreateNotifications < ActiveRecord::Migration[7.0]
def change
# create_table :notifications do |t|
# t.integer :visitor_id, null: false
# t.integer :visited_id, null: false
# t.references :room, null: false, foreign_key: true
# t.string :action, default: '', null: false
# t.boolean :checked, default: false, null: false
# t.timestamps
# end
# add_index :notifications, :visitor_id
# add_index :notifications, :visited_id
# add_index :notifications, :room_id
end
end
この状態でrails db:migrateを実行します。
すると、しっかりマイグレーションファイルが実行されています。
ここまできたら、マイグレーションファイルの中身を正しい記述に変更します。
変更後、rails db:rollbackで戻した後、rails db:migrateを実行するとエラーが解消されます。
終わりに
今回はrails db:migrateできない時の対処法を共有させていただきました。
エラーが発生すると、作業が滞り、気持ちも落ち込みがちですが、解決した時の喜びは計り知れません。
エラーが発生した時は、先人たちの知恵や経験から学ばせてもらいましょう!
この記事が誰かの役に立てば幸いです。
最後まで読んでいただきありがとうございました!!!