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で記述する必要があったようです。
解決のために行ったこと
①.envの修正
エラーが出た記述
最初の
DB_CONNECTION=mysql
DB_HOST=localhost
変更後の記述 DB_HOST = 127.0.0.1
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
②キャッシュのクリア
コード修正後に、MAMPとサーバーの再起動をしてもサーバーにキャッシュが残っており、同様のエラーが出てしまうので、下記コマンドを実行しました。
キャッシュクリアコマンド
php artisan cache:clear
これで、完全にエラーが解決しました。
DB操作はキャッシュが残りがちなので、気をつけたいと思います。
おまけ
localhostというのは自身のアドレスを人間が読みやすくした人間用のアドレスで、PCに読ませるにはIPアドレス(127.0.0.1)へ変換する必要があるようです。
macで自身のIPアドレス ホスト名を確認したい方は、下記をvim等で見てみると分かるかと思います。
/private/etc/hosts
まとめ
DB接続ができていたことが確認された後のエラーで、問題の切り分けに時間がかかってしまったことと、localhostの意味などはあまり触れてこなかったことだったので勉強記録のつもりでまとめることにしました。
サーバーサイドの勉強はまだまだなので、これから実践しながら学んでいこうと思いました。
この記事が気に入ったらサポートをしてみませんか?