クマのブログ

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

"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)は必ずバックアップを取ることをオススメする

プライバシーポリシー

個人情報の利用目的

当ブログでは、お問い合わせや記事へのコメントの際、名前やメールアドレス等の個人情報を入力いただく場合がございます。

取得した個人情報は、お問い合わせに対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、これらの目的以外では利用いたしません。

広告について

私、クマは、転職クエストを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定された転職クエストの参加者です。

免責事項

当ブログからのリンクやバナーなどで移動したサイトで提供される情報、サービス等について一切の責任を負いません。

また当ブログのコンテンツ・情報について、できる限り正確な情報を提供するように努めておりますが、正確性や安全性を保証するものではありません。情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

著作権について

当ブログで掲載している文章や画像などにつきましては、無断転載することを禁止します。

当ブログは著作権や肖像権の侵害を目的としたものではありません。著作権や肖像権に関して問題がございましたら、お問い合わせフォームよりご連絡ください。迅速に対応いたします。