前提
・Laravel : 6.0
・MySQL : 5.7
・実務で使用予定のLaravelをUdemyで学習中につまずいた
困ったこと
cmdで
php artisan migrate
を実行したところ、以下エラーが発生
英訳すると「参照するテーブルがない」とのこと。
「いやいや、testsテーブルあるし。。。」
やったこと1
マイグレーション忘れ?
仮説
「cacheやconfig残ってて正常にマイグレーションできなかったか?」と推測
対策
php run serve
を切断し、
php artisan clear : cache
でcacheを削除、
php artisan clear : config
でconfigを削除し、再度
php artisan migrate
実行
結果
解決せず、同じエラー文が発生
やったこと2
不要なファイルが残っている?
仮説
実はこのエラーが発生する前に初めてのマイグレーションでエラーが発生。
その時は学習途中でMySQLを5.7→8.0へバージョンアップしたことによる初期設定の狂いが原因でエラーが発生。
その中で、phpMyAdmin上のデータベース情報を一度削除し、作り直した経験がある。
また先ほどの「やったこと1」の中で、「参照するテーブルがない」とのエラー文だったので、phpMyAdmin上のテーブルが本当にないか確認するために、テーブルをクリックすると、以下エラー文が出る
なるほど、本当にテーブルないんだな。
対策
コチラを参考。
記事の下部にある通り、データベースが格納してある
C:\xampp\mysql\data\データベース名
を調べた。
すると、記事の通り過去消したはずのファイル(.frmと.ibd)が残っていた。
そこで、過去消したはずのファイル(.frmと.ibd)を消去or別ファイルへ移動。
これにより、データベース情報がきれいになった
結果
再度cmdで
php artisan migrate
を実行し、正常にマイグレーション完了
備考
今回私は学習用ということもありデータベースを気軽にいじりましたが、移動させるファイル(.frmと.ibd)は必ずバックアップを取ることをオススメする