LoginSignup
13
6

More than 3 years have passed since last update.

laravel 初めてデータベースを接続する際のエラー解決

Last updated at Posted at 2020-11-28

はじめに

今回は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')`

2020-11-25_12-34-39-47c2c1db8e1dbed6e5db458f9a1dcb3e.png

エラー文の解説

データベースに接続する際、拒否されています。
つまり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

2020-11-25_12-51-33-0e26f83ec25a51da85872d4b77c8f59b.png
e7e7520802da32fab0aae676b6e86f1d.png

エラー解決

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を実行すると下記のスクショの様に解決できます。
“スクリーンショット” 2020-11-28 13.17.21.jpg

最後に

如何でしょうか?無事に解決できましたか?
もし、おかしいところがあれば是非突っ込んで欲しいです。

13
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
6