Laravel ログイン機能実装後、 DB接続エラーが出た

DB接続は確認済みでしたが、laravel uiを使用してログイン機能を実装し、新規登録を行おうとしたところ、エラーが発生しました。

SQLSTATE[HY000] [2002] No such file or directory

原因

調べたところ、.envに記述したホスト名が不適切だったことが原因でした。

MAMPでlaravelから接続するにはTCP接続とUNIXドメインソケットを使用する方法があるようで、私はTCP接続の方法をとっていました。

MAMPを立ち上げた際のページに記載されるmysql(下記写真)を参考に.envを編集していましたが、このTCP接続を利用するには、ホスト名をlocalhostではなく、127.0.0.1で記述する必要があったようです。

スクリーンショット 2021-02-26 22.06.25

解決のために行ったこと

①.envの修正

エラーが出た記述

最初の
DB_CONNECTION=mysql
DB_HOST=localhost

変更後の記述 DB_HOST = 127.0.0.1

DB_CONNECTION=mysql
DB_HOST=127.0.0.1

参考URL

②キャッシュのクリア

コード修正後に、MAMPとサーバーの再起動をしてもサーバーにキャッシュが残っており、同様のエラーが出てしまうので、下記コマンドを実行しました。

キャッシュクリアコマンド

php artisan cache:clear

これで、完全にエラーが解決しました。

DB操作はキャッシュが残りがちなので、気をつけたいと思います。

おまけ

localhostというのは自身のアドレスを人間が読みやすくした人間用のアドレスで、PCに読ませるにはIPアドレス(127.0.0.1)へ変換する必要があるようです。

macで自身のIPアドレス ホスト名を確認したい方は、下記をvim等で見てみると分かるかと思います。

/private/etc/hosts

まとめ

DB接続ができていたことが確認された後のエラーで、問題の切り分けに時間がかかってしまったことと、localhostの意味などはあまり触れてこなかったことだったので勉強記録のつもりでまとめることにしました。

サーバーサイドの勉強はまだまだなので、これから実践しながら学んでいこうと思いました。

この記事が気に入ったらサポートをしてみませんか?