〜事の経緯〜
認証機能をphp artisan make:auth
で作り、migrateで認証テーブルを作成しようとするも...
php artisan migrateでエラー起きた...
SQLSTATE[HY000] [2002] Connection refused
(SQL: select * from information_schema.tables where table_schema =
laravel and table_name = migrations and table_type = 'BASE TABLE')
現在Laravel勉強中なのですが、今までSQLiteを使っていて、今回はベーシックにMySQLに繋ごうとしたら、少し苦戦しました。
原因は.envとdatabase.phpの記述ミス
でしたが、同様の罠にハマる方に参考になればと思います。
環境
OS : macOS Mojave 10.14.5
MAMP : 5.3
Laravel : 5.8.x
MAMPがmacに入っている前提で進めます
##手順1:phpmyadminでデータベース作成
phpmyadminでDBを作っておきます。
今回はLaravel
としました。
##手順2:MAMPの情報を控える
アプリを起動したら開かれるwebページに乗っていますね。
このSocketが肝になります。
では、まず.envから修正しましょう。
##手順3:.envの修正
デフォルトだと以下のようになっています。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_USERNAME=root
DB_PASSWORD=
これを、MAMPの情報を元に、以下のように変えます。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=8889
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=root
DB_SOCKETが新しく入り、その他各種情報も変えます。
DB_DATABASE
は先ほど作ったLaravelデータベースを指定しています。
その次はdatabase.phpです。
##手順4:database.phpの修正
デフォルトのdatabase.phpはこうなっています。
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
それを、以下のように変えます。
'port' => env('DB_PORT', '8889'),
'database' => env('DB_DATABASE', 'laravel'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', 'root'),
以上になります。
php artisan migrate
でテーブル作れるかな...
やったぜ
確認のために、phpmyadminを開きます。
テーブルが作成されている=DBと接続できている
よかったです😌