😎

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for mysql

2024/02/16に公開

エラーの内容

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ファイルに問題があると考えます。

.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