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

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

ただいまの
回答率

89.72%

heroku run rails db:migrateをするとMysql2::Error: Table 'heroku_~~~~~' doesn't existとエラーが出る

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,160

widget11

score 179

環境は
rails5.2
mysql2 '>= 0.3.18', '< 0.5'
です。

タイトル通りheroku run rails db:migrateでマイグレーションをを行うと

Mysql2::Error: Table 'heroku_6fd1933f15cb900.leagueagendas' doesn't exist: 
SHOW FULL FIELDS FROM `leagueagendas`
.
.ログ省略
.
ActiveRecord::StatementInvalid: Mysql2::Error: Table 'heroku_6fd1933f15cb900.leagueagendas'
 doesn't exist: SHOW FULL FIELDS FROM `leagueagendas`
.
.ログ省略
.
Caused by:
Mysql2::Error: Table 'heroku_6fd1933f15cb900.leagueagendas' doesn't exist
.
.ログ省略
.


と3つエラーを吐き出します。
このleagueagendasというのは自分がローカル(development)でアプリを作成していた際に作ったテーブルなのですが、色々あり(初心者であるため非効率なトライアンドエラーがかなり多いです。。。)削除してしまったものです。
一応rails d model Leagueagendaモデルの削除と

class Records < ActiveRecord::Migration[5.2]
  def change
    drop_table :leagueagendas
  end
end


とマイグレーションファイルを作成し、ドロップテーブルをしてテーブルも完全に削除したはずだったのですが、何故か参照されてしまっています。
そもそも何故このエラーが出ているのかも、どう対策すればよいのかも分かりません。
何かまだ残骸みたいなのが残っていて参照されているのでしょうか?
どうすればエラーが吐かなくなるでしょうか。。。ここ3日間くらいあと一歩のところでherokuへ自作のアプリをデプロイ出来ず悔しくて寝れないです。。。必要であればログや詳細を追記します。
宜しくお願い致します。

追記

#db/migrate
$ heroku run rake db:migrate:status
   up     20180808163127  Create players
   up     20180813083503  Create boards
   up     20180813091701  Create comments
   up     20180821170634  Create rankings
   up     20180824194141  Create latestleagues
  down    20180903181519  Rename away team id column to away team
  down    20180903182558  Rename titre column to agendateams
  down    20180904095543  Add team name to players
 .
 .
 down    20180924132219  Records
 .

$ bundle exec rake db:migrate:status 
   up     20180808163127  Create players
   up     20180809165129  ********** NO FILE **********
   up     20180813083503  Create boards
   up     20180813091701  Create comments
   up     20180814201902  ********** NO FILE **********
   up     20180819160958  ********** NO FILE **********
   up     20180819190626  ********** NO FILE **********
   up     20180821170251  ********** NO FILE **********
   up     20180821170634  Create rankings
   up     20180824194141  Create latestleagues
   up     20180902162610  ********** NO FILE **********
   up     20180903181519  Rename away team id column to away team
   up     20180903182558  Rename titre column to agendateams
   .
   .
  up     20180924132219  Records
   .
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

こんにちわ。

leagueagendasモデルを作成するmigrationファイルはまだ存在していますか?
このmigrationファイルが存在しない状態で、drop_tableなどの変更を加えようとすれば、heroku本番環境ではleagueagendasテーブルがないので上記エラーがでるのでは?と思います。
その場合はleagueagendasテーブルを操作するmigrationファイルを消してあげれば解消するとは思いますが、DBの構成とmigrationファイルとで齟齬が出てしまうかもしれないので、気をつけてください。

もし、試行錯誤を繰り返してmigrationファイルが散らかってしまっているようであればsquasherなどのgemで一度整理するのも良いかもしれませんよ。(たとえ散らかっても、トライアンドエラーはとても良い試みですけどね!)
squasherは現在のdb schemaの状態を見て、不要なmigartionなどを整理するgemになります。
でも、本当はこういったgemを使うのであれば、migartionの仕組みをちゃんと理解してから使うのがおすすめです。

migrationの仕組みはそれほど難しくはありません。
少しググるとたくさん記事がhitしますが、少し下地のある人にはこの記事とかはとても簡潔にまとまっていて良いんじゃないかと思います。
scheme_migrationsの中身が見たければ、herokuであれば、

$ heroku run rake db:migrate:status


とかで見れますよ!理解の助けになるはずです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/03 16:20

    ありがとうございます!本日も家に帰ったら確認致します。
    ちなみにローカルでbundle exec rake db:migrate:status を実行した際に上にあるように、 ********** NO FILE **********と書いてある(おそらく不要だと思い手動で削除したもの)マイグレーションファイルがup状態になっているのですが、こちらは削除したほうがよいのでしょうか?
    https://qiita.com/yukofeb/items/ce39c7aabbfdc16205ea
    を見るとstatusをdownにして削除しているようなのですが、upのままでも直接右クリックなりターミナルからrmコマンドで削除してもいいのでしょうか?
    postgress一考してみます!

    キャンセル

  • 2018/10/03 23:29

    ありがとうございます!!!!!!!!!!!!!!!!!!!!
    おかげさまで無事アプリケーションをデプロイできました!!!
    嬉しくて涙でました笑
    本当に親切にご質問にご回答いただきありがとうございます!!!!

    キャンセル

  • 2018/10/04 11:06

    よかったです!

    > FILE **********と書いてある(おそらく不要だと思い手動で削除したもの)マイグレーションファイルがup状態になっているのですが、こちらは削除したほうがよいのでしょうか?

    わたしは特にケアしなくてもここまで問題が発生しなかったのですが、たしかにqitaのリンク先にあるように、リファクタリングしたほうが安全かなとは思います。

    ただ、おそらく問題が発生するフェーズとしては、DBをinitして再構築するケースなどと思います(例えば、新しい開発メンバーが入った時や、開発端末を入れ替えるときとか?)
    なので、今はせっかくデプロイできたアプリの機能を修正するとか、もっと楽しいことを優先して、問題が発生した時や余裕ができたときにリファクタリングするのでも充分かなとは思います。

    マイグレーションの概念掴むのはむずかしいですよね...。ただ、暇な時に少しずつ学んでいくと、railsの深淵の端に少し触れられたような気がしてたのしいですよ。理解してしまえばよくできた仕組みだと思えるはずです。

    どちらのしても、初デプロイおめでとうございます!
    herokuを選択されたのはとても良い選択だと思いますよ

    キャンセル

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

  • ただいまの回答率 89.72%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る