ピックアップ
DockerコンテナでのLaravelのMigrationが「SQLSTATE[HY000] [2002] Connection refused」のエラーになった件
Laravelを使用していて、
Dockerコンテナの環境で、
ネットワークを構築して、
Migrationを実行をした時に、
SQLSTATE[HY000] [2002] Connection refused
のエラーが発生したが、
この件、なぜか調べたときの内容。
ただの環境ファイルを置いてるつもりで置けてなかった
という初歩の問題だったのだが、
確認した流れなど、
備忘録として、個人的にメモ。
Laravelのバージョン
Laravelのバージョンとしては、
php artisan --version
というコマンドで確認すると、
$ php artisan --version
Laravel Framework 9.52.4
というバージョンであることがわかります。
事象
Dockerでの環境構築で、
データベースの初期化で、
php artisan migrate
でのマイグレーションを実施。
その際に、
SQLSTATE[HY000] [2002] Connection refused
のエラーが発生。
エラーログ詳細としては、
Illuminate\Database\QueryException
SQLSTATE[HY000] [2002] Connection refused
(SQL: select * from information_schema.tables where table_schema
= forge and table_name = migrations and table_type = 'BASE TABLE')
というエラーが起きていた。
調査途中メモ
調査途中で、
.env
の環境設定がおかしいのかと思ったが、
DB_CONNECTION=mysql
DB_HOST=sample_host
DB_PORT=3306
DB_DATABASE=sample_database
DB_USERNAME=sample_user
DB_PASSWORD=sample_password
としており、
この点に関しては、
コンテナ間のMySQLの通信も、
コマンドで確認済み。
エラーログを再確認したところ、
SQLSTATE[HY000] [2002] Connection refused
(SQL: select * from information_schema.tables where table_schema
= forge and table_name = migrations and table_type = 'BASE TABLE')
でこれの
table_schema = forge
となっているので、
configの設定の中で、
環境変数の
'database' => env('DB_DATABASE', 'forge'),
この値がうまく環境変数の値として読み込めていないと推測。
原因
原因としては、
環境変数ファイルがプロジェクト直下に置いてなかった
というだけでした。
単純ですが、
今後のために、
なぜ、これを自分が起こしてしまったのかを考えたら、
コンテナ初期構築時に設定ファイルコピーを忘れてた
ということになりますね。
そのため、結果として、
環境変数ファイルをボリュームマウントの対象フォルダに入れてなかった
ということが起きていたのです。
この辺りは初期構築時の構築処理にまとめておく必要がありますね。
その辺りも今後、対策するので、また機会があればメモ。
おすすめ書籍
コメント一覧
コメントはまだありません。
コメントを残す