クマのブログ

つまづいたところ、学びを書いていきます

"Base table or view not found: 1932 Table ' ' doesn't exist in engine (SQL: select * from ` `)"と"Table doesn’t exist in engine"に悩まされる…

前提

Windows

・Laravel : 6.0

MySQL : 5.7

・実務で使用予定のLaravelをUdemyで学習中につまずいた

 

困ったこと

cmdで

php artisan migrate

を実行したところ、以下エラーが発生

f:id:kuma_kuma0121:20210407213402j:plain

エラー文

英訳すると「参照するテーブルがない」とのこと。

f:id:kuma_kuma0121:20210407213525p:plain

その時のデータベース(phpMyAdmin)

「いやいや、testsテーブルあるし。。。」

 

やったこと1

マイグレーション忘れ?

仮説

「cacheやconfig残ってて正常にマイグレーションできなかったか?」と推測 

対策

php run serve

を切断し、

php artisan clear : cache

でcacheを削除、

php artisan clear : config

でconfigを削除し、再度

php artisan migrate

実行

結果

解決せず、同じエラー文が発生

f:id:kuma_kuma0121:20210407214055p:plain

 

やったこと2

不要なファイルが残っている?

仮説

実はこのエラーが発生する前に初めてのマイグレーションでエラーが発生。

その時は学習途中でMySQLを5.7→8.0へバージョンアップしたことによる初期設定の狂いが原因でエラーが発生。

その中で、phpMyAdmin上のデータベース情報を一度削除し、作り直した経験がある。

 

また先ほどの「やったこと1」の中で、「参照するテーブルがない」とのエラー文だったので、phpMyAdmin上のテーブルが本当にないか確認するために、テーブルをクリックすると、以下エラー文が出る

f:id:kuma_kuma0121:20210407214820p:plain

なるほど、本当にテーブルないんだな。

 

対策

コチラを参考。

thejuraku.com

記事の下部にある通り、データベースが格納してある

C:\xampp\mysql\data\データベース名

を調べた。

f:id:kuma_kuma0121:20210407221536p:plain

すると、記事の通り過去消したはずのファイル(.frmと.ibd)が残っていた。

 

そこで、過去消したはずのファイル(.frmと.ibd)を消去or別ファイルへ移動。

これにより、データベース情報がきれいになった

 

結果

再度cmdで

php artisan migrate

を実行し、正常にマイグレーション完了

f:id:kuma_kuma0121:20210407222236p:plain

 

備考

今回私は学習用ということもありデータベースを気軽にいじりましたが、移動させるファイル(.frmと.ibd)は必ずバックアップを取ることをオススメする