前提・実現したいこと
herokuにデプロイしようとして、
heorku run rails db:migrate
を実行したところ
Caused by: Mysql2::Error: Can't DROP 'region'; check that column/key exists
とエラーが出ました
外部キーの参照先は削除できないよって認識でよろしいのでしょうか?
だから外部キーを削除すればいい??
該当のソースコード
調べたところ、外部キーがどうのこうのって書いてあって、
regionに該当するところは
drinksテーブルのregion_idしかないと思います
このregion_idはactive hashのidでregionのデータベースは作ってないと思います、、、。
regionテーブルを作った覚えがないので、どうしたらいいかわかりません。
またリレーションがどうとか書いてあったので、格モデルのリレーションを見たところ特に怪しそうな場所が見受けられませんでした。
region.rb
ruby
1class Region < ActiveHash::Base 2 self.data = [ 3 { id: 2, name: 'マルチリージョン' }, 4 { id: 3, name: 'ラテンアメリカ' }, 5 { id: 4, name: 'アフリカ' }, 6 { id: 5, name: 'アジア、太平洋' } 7 ] 8end 9
region_idの参照先はこのモデルです。
マイグレーションファイル
ruby
1class AddRegionIdToDrinks < ActiveRecord::Migration[6.0] 2 def change 3 add_column :drinks, :region_id, :integer 4 add_column :drinks, :body_id, :integer 5 add_column :drinks, :acidity_id, :integer 6 add_column :drinks, :processing_id, :integer 7 end 8end
となっており、:referencesとかにしてないです。
試したこと
heroku run rails db:reset
を実行してもこのエラーが出ました
SQLのエラーで、ググってもあまり理解できず、怪しそうな場所も絞れず、投げやりな質問になってしまい申し訳ありませんが、
「なぜこのエラーが起きるのか」
「このエラーの意味」
「このエラーの解決法」
を教えていただければ幸いです。
あなたの回答
tips
プレビュー