ピックアップ

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'),

この値がうまく環境変数の値として読み込めていないと推測。

原因

原因としては、

環境変数ファイルがプロジェクト直下に置いてなかった

というだけでした。

単純ですが、

今後のために、

なぜ、これを自分が起こしてしまったのかを考えたら、

コンテナ初期構築時に設定ファイルコピーを忘れてた

ということになりますね。

そのため、結果として、

環境変数ファイルをボリュームマウントの対象フォルダに入れてなかった

ということが起きていたのです。

この辺りは初期構築時の構築処理にまとめておく必要がありますね。

その辺りも今後、対策するので、また機会があればメモ。

ピックアップ

おすすめ書籍

コメント一覧

コメントはまだありません。

コメント送信

コメントを残す

広告

おすすめ記事