“php artisan migrate” したらSQLSTATE[HY000] [2002]…とエラーが出た

はじめてデータベースの接続をしようとしたときに下記のエラーが表示された。

SQLSTATE[HY000] [2002] php_network_getaddresses: をググったところデータベース接続ができていないようです。

なので、.envファイルを開きデータベース情報を修正する必要があるようです。下記のコードはphp artisan migrateを実行したときのエラー内容です。

vagrant@homestead:~/code/laravel$ php artisan migrate

   Illuminate\Database\QueryException 

  SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for mysql failed: Temporary failure in name resolution (SQL: select * from information_schema.tables where table_schema = laravel and table_name = migrations and table_type = 'BASE TABLE')

  at vendor/laravel/framework/src/Illuminate/Database/Connection.php:759
    755▕         // If an exception occurs when attempting to run a query, we'll format the error
    756▕         // message to include the bindings with SQL, which will make this exception a
    757▕         // lot more helpful to the developer instead of just the database's errors.
    758▕         catch (Exception $e) {
  ➜ 759▕             throw new QueryException(
    760▕                 $query, $this->prepareBindings($bindings), $e
    761▕             );
    762▕         }
    763▕     }

      +36 vendor frames 
  37  artisan:37
      Illuminate\Foundation\Console\Kernel::handle()

WebサーバーからMySQLに接続してデータベース情報を確認する

vagrant upしてvagrant sshでログインできたらmysql -u rootでMySQLにログインします。

vagrant@homestead:~/code/laravel$ mysql -u root

ログインしたら下記のSELECT文を打つことでuser,host情報が取得できます。

mysql> SELECT user, host FROM mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| homestead        | %         |
| homestead        | 0.0.0.0   |
| debian-sys-maint | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+

これでuserとhost情報は取得できました。パスワードに関してはHomesteadの場合デフォルトだとsecretになります。

Laravel公式:データベースの接続

また、show databases;でデータベースがあるのかも確認しましょう。

.envを開きデータベース情報の確認と修正

メインディレクトリの中に.envファイルがあるのでそちらを開きます。

vagrant@homestead:~/code/laravel$ ls -a -1
app
artisan
bootstrap
composer.json
composer.lock
config
database
.editorconfig
.env
.env.example
.gitattributes
.gitignore
lang
package.json
phpunit.xml
public
README.md
resources
routes
storage
tests
vendor
vite.config.js

DB_と書かれているのがデータベース関連になります。先ほど得たデータベースの情報に修正をします。

DB_CONNECTION=mysql
DB_HOST=0.0.0.0
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=homestead
DB_PASSWORD=secret

内容を修正したらキャッシュをクリアさせます。コマンドはphp artisan config:cacheになります。

もし接続できなかったらvagrant haltもしてみましょう。

vagrant@homestead:~/code/laravel$ php artisan config:cache

   INFO  Configuration cached successfully.  

vagrant@homestead:~/code/laravel$ php artisan migrate

   INFO  Preparing database.  

  Creating migration table ............................................................. 16ms DONE

   INFO  Running migrations.  

  2019_12_14_000001_create_personal_access_tokens_table ................................ 37ms DONE
  2022_08_03_210604_create_laravel_table ............................................... 10ms DONE
vagrant@homestead:~/code/laravel$ 

以上でデータベースの接続ができるようになりました。