前提・実現したいこと
Railsを使ってwebアプリ開発をしているのですが、rails db:migrate実行時のエラーを解決できず困っています。
エラーに至ったのは、マイグレーションファイルでadd_referenceの第二引数で使用するモデル名を間違えて記入してしまいました。subplacesと入力するべきところをsub_placesと入力してしまいました。
その際ターミナル上で出たエラーメッセージが下記1となります。
マイグレート途中でエラーとなったのでrails db:migrate:statusを確認すると当該ファイルの状態はdowmのままでした。当該マイグレーションファイルがdownになっていたのでスペルを書き換えもう一度rails db:migrateを実行したところ、下記2のエラーメッセージが出てしまいます。
おそらく、当該マイグレーションファイルがdownの状態なのにadd_reference :posts, :subplace, foreign_key: true以外の部分がデータベースに反映されてしまっていると思われます。
データベース管理に使用しているSequel Proというソフトではマイグレーションファイルの内容が反映されています。
このような状況での解決策はありますでしょうか?
ご回答よろしくお願いいたします。
発生している問題・エラーメッセージ
エラーメッセージ1 Mysql2::Error: Table 'アプリ名_development.sub_places' doesn't exist: SHOW FULL FIELDS FROM `sub_places` エラーメッセージ2 Mysql2::Error: Duplicate column name 'lunch_name': ALTER TABLE `posts` ADD `lunch_name` varchar(255)
該当のソースコード
ruby
1# マイグレーションファイル 2class AddDetails2ToPosts < ActiveRecord::Migration[5.2] 3 def change 4 add_column :posts, :lunch_name, :string 5 add_column :posts, :lunch_text, :text 6 add_column :posts, :lunch_image, :text 7 add_column :posts, :lunch_address, :string 8 add_column :posts, :lunch_link, :string 9 add_column :posts, :dinner_name, :string 10 add_column :posts, :dinner_text, :text 11 add_column :posts, :dinner_image, :text 12 add_column :posts, :dinner_address, :string 13 add_column :posts, :dinner_link, :string 14 add_column :posts, :section1, :integer 15 add_column :posts, :section2, :integer 16 add_column :posts, :section3, :integer 17 add_column :posts, :section4, :integer 18 19 add_reference :posts, :place, foreign_key: true 20 add_reference :posts, :subplace, foreign_key: true 21 end 22end 23
試したこと
https://qiita.com/niyomong/items/22fa60657ea8ee478647a
こちらの記事を参考にさせていただき。
一度マイグレーションファイルを空にしてrails db:migrateし、statusをupにした状態でrails db:rollbackを行い,スペルを直し再度rails db:migrateを行う。
結果、上記のエラーメッセージ2と同じことになりました。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。