前提・実現したいこと
既存のNotifications
テーブルに、message_id
カラムを追加したいです。
一度間違ったファイルを作成してしまった為、そちらを削除し再度マイグレーションファイルを作成しました。しかしrails db:migrate
をするとduplicate column
とエラーが表示されてしまいます。
今回行った作業は以下の通りです。
- 削除したいファイルのup、downのステータスを確認。
bundle exec rake db:migrate:status
- ファイルの削除をする為に、該当のステータスを
down
にする。
bundle exec rake db:migrate:down VERSION=20201209034434_add_message_id_to_notifications.rb
- 該当のファイルを削除。
rails destroy migration AddMessageIdToNotifications
- 該当のファイルが削除され、元に戻った状態でデータベースを更新する。
rails db:migrate
- 必要なマイグレーションファイルを再度作成。カラムの追加を実行する。
rails g migration AddMessageIdToNotifications message_id:integer
- 再びデータベースを更新する。
rails db:migrate
発生している問題・エラーメッセージ
C:\Users\hoge>rails db:migrate D, [2020-12-09T14:53:28.828088 #18368] DEBUG -- : (0.3ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC D, [2020-12-09T14:53:28.831726 #18368] DEBUG -- : ↳ bin/rails:4 I, [2020-12-09T14:53:28.833396 #18368] INFO -- : Migrating to AddMessageIdToNotifications (20201209055244) D, [2020-12-09T14:53:28.846688 #18368] DEBUG -- : (0.1ms) begin transaction D, [2020-12-09T14:53:28.848057 #18368] DEBUG -- : ↳ bin/rails:4 == 20201209055244 AddMessageIdToNotifications: migrating ====================== -- add_column(:notifications, :message_id, :integer) D, [2020-12-09T14:53:28.854847 #18368] DEBUG -- : (0.9ms) ALTER TABLE "notifications" ADD "message_id" integer D, [2020-12-09T14:53:28.860915 #18368] DEBUG -- : ↳ db/migrate/20201209055244_add_message_id_to_notifications.rb:3 D, [2020-12-09T14:53:28.867260 #18368] DEBUG -- : (0.5ms) rollback transaction D, [2020-12-09T14:53:28.872016 #18368] DEBUG -- : ↳ bin/rails:4 rails aborted! StandardError: An error has occurred, this and all later migrations canceled: SQLite3::SQLException: duplicate column name: message_id: ALTER TABLE "notifications" ADD "message_id" integer ... Caused by: ActiveRecord::StatementInvalid: SQLite3::SQLException: duplicate column name: message_id: ALTER TABLE "notifications" ADD "message_id" integer ・・・ Caused by: SQLite3::SQLException: duplicate column name: message_id
【rails c】にて、該当のテーブルのカラム一覧を確認
message_id
カラムは存在していないにも関わらず、duplicate column
と言われてしまいます。
[186] pry(main)> Notification.column_names => ["id", "visitor_id", "visited_id", "post_id", "action", "checked", "created_at", "updated_at", "comment_id"]ソースコード
schema.rb
schema.rb
を見ても、message_id
カラムは存在していません。
ActiveRecord::Schema.define(version: 2020_11_24_045031) do create_table "notifications", force: :cascade do |t| t.integer "visitor_id", null: false t.integer "visited_id", null: false t.integer "post_id" t.string "action", default: "", null: false t.boolean "checked", default: false, null: false t.datetime "created_at", null: false t.datetime "updated_at", null: false t.integer "comment_id" t.index ["comment_id"], name: "index_notifications_on_comment_id" t.index ["post_id"], name: "index_notifications_on_post_id" t.index ["visited_id"], name: "index_notifications_on_visited_id" t.index ["visitor_id"], name: "index_notifications_on_visitor_id" end end
20201209055244_add_message_id_to_notifications.rb
作成したマイグレーションファイルです。何度か試みたので、同じ内容の物を削除→作成しております。
class AddMessageIdToNotifications < ActiveRecord::Migration[5.2] def change add_column :notifications, :message_id, :integer end end
試したこと
その他db:migrate:reset
も試してみましたが、同様の結果でした。
補足情報(FW/ツールのバージョンなど)
ruby 2.6.4p104
RubyGems 3.0.3
Rails 5.2.3
回答1件
あなたの回答
tips
プレビュー