#はじめに
今回はUdemyにて学習した際に発生したエラーになります。その解決方法を投稿したいと思います。
#初学者の方へ
初めてphpMyAdminとlaravelがデータベースに接続する際にどの様にエラーを突破したかを書いていますので是非参考にしてみて下さい。
今回のエラー文は下記になります。スクショも載せます。
`SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo 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')`
#エラー文の解説
データベースに接続する際、拒否されています。
つまりlaravelの.envにてはポート番号 password データベースの名前が間違っている可能性が高いとなります。
#.env ポート番号 phpMyadmin を確認しよう
.env.php
//laravelの .envになります。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_task
DB_USERNAME=laravel_user //phpMyadminの特権にusernameがあります。
DB_PASSWORD=hosthost
#エラー解決
DB_HOST
を確認すると`phpMyadminでは[%] .envでは[127.0.0.1]
これがエラーの原因となります。こちらを下記に書き換えます。
.env.php
//laravelの .envになります。
DB_CONNECTION=mysql
DB_HOST=localhost //ここを書き換えて下さい
DB_PORT=3306
DB_DATABASE=laravel_task
DB_USERNAME=laravel_user //phpMyadminの特権にusernameがあります。
DB_PASSWORD=hosthost
また、念のためですがdatabase.php
も下記に書き換えます。
database.php
// 54行目を書き換えます
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
//'unix_socketを上記のように書き換え
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
また、ターミナルで下記を実行して下さい。
//ターミナルにて
php artisan cache:clear
php artisan config:cache
最後にphp artisan migrate
を実行すると下記のスクショの様に解決できます。
#最後に
如何でしょうか?無事に解決できましたか?
もし、おかしいところがあれば是非突っ込んで欲しいです。