【Laravel】artisan migrateがエラーで詰まった話 

webあれこれ

Failed to open stream: No such file or directory


サーバーを確認すると(php artisan serve)、エラー画面になっていました。

英語を翻訳すると・・・
ストリームを開くことができませんでした:そのようなファイルまたはディレクトリはありません

該当するファイルに見覚えがなく、路頭に迷ってしまいました・・・

ララちゃん
ララちゃん

以前、何のファイルをいじったかの記憶もない・・・

何の手がかりもない・・・

記憶が全くなかったのですが、エラーメッセージをググりまくると「データベースの接続関係ではないか…?」と思い出しました。

php artisan migrate エラー

php artisan serveをして画面がエラーの場合とりあえず、該当のファイルがいくつか表示されると思うのですが、全然ファイル名に記憶がないので「php artisan migrate」をしてみる。

// If an exception occurs when attempting to run a query, we'll format the error

// message to include the bindings with SQL, which will make this exception a

// lot more helpful to the developer instead of just the database's errors.

 catch (Exception $e) {
  ➜ 703▕             throw new QueryException(
    704▕                 $query, $this->prepareBindings($bindings), $e
    705▕             );
    706▕         }
    707▕     }
ララちゃん
ララちゃん

エラーになりまくり・・・

こわ・・・

解決!

「php artisan migrate エラー」でググりまくり、以下の記事にたどり着きました。

参考
https://qiita.com/okmtz/items/deb9d3bcd622eed59034

mysqlをローカルで使用したのですが、エラーの原因が【mysqld.sock】

ソケット接続をしているのにパスを記載しないなら、接続できないよ!というエラーでした!

mysqlはXAMPP内にあるものを使用しているので、恐らくそうなったのかな・・・と。
macを使用している方はMAMPPを使う人も多いと思いますが、このソケット接続のエラーはMAMPPでもよくあるみたいです!

mysqld.sockのありかを調べる

今回はDockerを使用していたので、Dockerのデータベースのコンテナに入ります。

//dockerのコンテナ名の確認
docker-compose ps

//データベースに入る
docker exec -it my-app bash

//場所の確認
ls

※my-appは任意のデータベース名

私の場合は/var/run/mysqld/mysqld.sockにありました。

envファイルを修正・キャッシュクリア

//.envファイルを修正
DB_SOCKET=/var/run/mysqld/mysqld.sock
//envファイルを修正したら必ずキャッシュクリアします
php artisan config:cache

php artisan migrateができて、
無事にブラウザが表示されたら、解決です!

タイトルとURLをコピーしました