“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$
以上でデータベースの接続ができるようになりました。