質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

0回答

1542閲覧

Mysql2::Error: Can't DROP 'region'; check that column/key exists

divclass123

総合スコア35

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

1クリップ

投稿2020/12/20 07:14

前提・実現したいこと

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のエラーで、ググってもあまり理解できず、怪しそうな場所も絞れず、投げやりな質問になってしまい申し訳ありませんが、
「なぜこのエラーが起きるのか」
「このエラーの意味」
「このエラーの解決法」
を教えていただければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moromon

2020/12/21 09:06

rubyを使ったマイグレーションは詳しくないのですが、コードを拝見しましたところ class RenameRegionColumnToDrinks < ActiveRecord::Migration[6.0] def change remove_column :drinks,:region remove_column :drinks,:body remove_column :drinks,:acidity remove_column :drinks,:processing end end ここが怪しそうです。 主キーとして設定しているregion_idを消そうとしてエラーが出ているのかな?と思ってます。 migrate/20201211113257_rename_region_column_to_drinks.rb このファイルを消したら同じようなエラーは出ますか?
divclass123

2020/12/29 04:08

ここのファイルを消して、git にpushして、もう一回heroku run rails db:migrateやったら上手くいきました!
divclass123

2020/12/29 04:09

御回答ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問