5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WSLでlaravel sailのデータベースをmigrateするのに苦労したので覚書

Last updated at Posted at 2023-04-27

今回対処したエラーコード

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

.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=todo
DB_USERNAME=root
DB_PASSWORD=

After

.env
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が始まってくれました!😊

というわけで、データベースの準備ができたところでガッツリ開発に集中できます!!

お疲れ様でした😘

5
3
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
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?