今回対処したエラーコード
SQLSTATE[HY000] [2002] Connection refused (Connection: mysql, SQL: select * from information_schema.tables where table_schema = todo and table_name = migrations and table_type = 'BASE TABLE')
素朴な疑問、Windows環境でどうやったらsailのコンテナにアクセスできるというのだろう。。。
WindowsでLaravel Sailを使うのは何かと面倒なことが多いです。
SailがLinux上で使うことを前提にしているので、LinuxベースではないWindowsで使おうとすると、何かと困難が多いわけです。
WindowsでSailの環境を作るのにも骨が折れましたが、こちらの記事の通りにやると、割と簡単に導入できますので、ぜひお試しください。
参考サイト:Laravel SailをWindowsにインストールする手順を分かりやすく解説
cloneした環境のデータベースをmigrateしたかった
今回は環境はすでにある状態なのですが、こちらでcloneした環境のデータベースをセットアップしなきゃいけないという状況。
にしても、sailを立ち上げたターミナルにはコマンド入力できないし。。。ということで、別窓でターミナル立ち上げ→WSL起動で
$ ./vendor/bin/sail artisan migrate --seed
を実行してみました。
そこで帰ってきた答え。
Sail is not running.
Sailが走ってないってよ😱
そりゃそうです。Sailが立ち上がってるのは別窓だから。
というわけでググりまくってると、バックグラウンドでSailを走らせる方法があったんですね。
それがこちら。
$ ./vendor/bin/sail up -d
おおお!
打てる。。。打てるぞよ。。。コマンドが😭
というわけで改めてmigrate実行
・・・
Illuminate\Database\QueryException
SQLSTATE[HY000] [2002] Connection refused (Connection: mysql, SQL: select * from information_schema.tables where table_schema = todo and table_name = migrations and table_type = 'BASE TABLE')
at vendor/laravel/framework/src/Illuminate/Database/Connection.php:793
789▕ // If an exception occurs when attempting to run a query, we'll format the error
790▕ // message to include the bindings with SQL, which will make this exception a
791▕ // lot more helpful to the developer instead of just the database's errors.
792▕ catch (Exception $e) {
➜ 793▕ throw new QueryException(
794▕ $this->getName(), $query, $this->prepareBindings($bindings), $e
795▕ );
796▕ }
797▕ }
+38 vendor frames
39 artisan:35
Illuminate\Foundation\Console\Kernel::handle()
なにそれ?😢
あきらめないのであります。
要はConnection refusedということだよねと。
そしてググってググってググった挙句みつけた答え。
.envファイルのDB_HOSTが原因だった
IPアドレスではなく、DBのコンテナ名で指定してやると良いとのこと。
Before
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=todo
DB_USERNAME=root
DB_PASSWORD=
After
DB_CONNECTION=mysql
DB_HOST=mysql #127.0.0.1
DB_PORT=3306
DB_DATABASE=todo
DB_USERNAME=root
DB_PASSWORD=
参考サイト:【Laravel】migrateができないのは環境変数が間違っているからかも!あるあるエラーを.envと共に振り返る。
ほんとにそれだけ?
と、半信半疑で再びコンテナ再起動で
$ ./vendor/bin/sail artisan migrate --seed
トライ!!
おおお!サクサクmigrateが始まってくれました!😊
というわけで、データベースの準備ができたところでガッツリ開発に集中できます!!
お疲れ様でした😘