SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for mysql
エラーの内容
php artisan migrateを実行したときに下記のエラーが発生しました。
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for mysql failed: nodename nor servname provided, or not known (SQL: select * from information_schema.tables where table_schema = laravel_task and table_name = migrations and table_type = 'BASE TABLE')
調べてみると、接続が拒否されてしまった時に起きるエラーでした。
解決策
上記エラーについては、データベースへの接続の設定を記載している.envファイルに問題があると考えます。
DB_CONNECTION=mysql // 接続先データベースの種類
DB_HOST=127.0.0.1 // 接続先ホストアドレス
DB_PORT=3000 // 接続先ポート番号
DB_DATABASE=laravel_task // 接続先データベース名
DB_USERNAME=laravel_user // 接続先ユーザー名
DB_PASSWORD=password123 // 接続先パスワード
まずは、接続先データベースの種類を確認してみましょう。
下記画像はMAMPの画面ですが、接続先のデータベースの種類はmysqlなので問題なさそうです。
次に、接続先ホストアドレスを確認してみましょう。
ここについては、ホスト名localhostかIPアドレス127.0.0.1を入力すれば問題ありません。
次に接続先ポート番号を確認してみましょう。
下記画像の赤枠の通り、ポート番号は8889なので3000から8889に修正する必要があります。
私の場合はポート番号に問題がありました。
接続先データベース名はlaravvel_taskで問題はなく、接続先ユーザー名もlaravel_userで合っています。接続先パスワードについては、laravel_userアカウントを作成したときにパスワードを設定していると思うので、そのパスワードをちゃんと入力できている確認します。
php artisan migrateが成功した場合
もう一度、php artisan migrateを実行してみると、下記画像のように4つのテーブルを作成します。
これでマイグレーションを行うことができました。
Discussion