Laravelで php artisan migrate
や php artisan db:seed
などDBまわりのartisanコマンドを実行するとエラーメッセージが表示されます。
【Laravel】PDOException SQLSTATE[HY000] [2002] No such file or directory
Laravelのアプリケーションが、mysqlやpostgresqlなどのDBにうまく接続できていないときに出るエラーです。
アプリルートのディレクトリにある.envファイルの内容を確認しましょう。
ここにDBへの接続情報が記載されているはずです。
このDBへの接続情報に間違いがあってつなげてない可能性が高いです。
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=db_name
DB_USERNAME=db_user
DB_USERNAME=root
DB_PASSWORD=db_password
DB_HOSTをlocalhost
から127.0.0.1
にするとつながったりすることがあるようです。
もちろんユーザ名やパスワードが間違っている場合も繋がりませんよ!
ターミナルから直接、mysqlコマンドで繋いでみてつながることも確認しておきましょうね
mysql -u user_name -p
みたいな。
ここを直してもダメなら config/database.php
を確認してください。
ここで.envを参照しているはず。
'default' => env('DB_CONNECTION', 'mysql'),
これは.envファイルのDB_CONNECTION
を参照する、という意味。
env()でちゃんと.envファイルの値を参照しているか確認してできていなければ参照するようにしましょう。
それでもダメならキャッシュかも。
一回、configのキャッシュを消しましょう。
php artisan config:clear
これで解決するはず。
公式リファレンスはこちら。
https://laravel.com/docs/9.x/configuration#environment-file-security
https://laravel.com/docs/9.x/database#read-and-write-connections