Laravel Sail v11でMySQLに接続できないときの対応策
-いきなり躓かないために-							
					フレームワークはDBを扱うクラスや環境設定が最初から用意されているので、MySQLに接続するのも簡単と思っていたのですが、最新のLaravel Sailを使った時、いきなり接続エラーが出て困りましたので、その対策についての覚書です。
Laravel Sailはデフォルトmysqlが使えるように設定されています。大きな変更はないはずです。
.env
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
# ↓  ローカル環境でmysqlが起動している時は追加
FORWARD_DB_PORT=3307          # 今回は追加
DB_DATABASE=gundb                   # データベース名 
DB_USERNAME=sail
DB_PASSWORD=password試しに、"./vendor/bin sail up -d"として起動しました。
localhost:8573

環境によってどんなエラーが表示されるか分かりませんが、似たようなエラーが表示されると思います。まずどんな状況かLaravel sailコマンドでmysqlに入り確認してみます。
今まで起動しているコンテナIDやコンテナ名を探して、"docker exec -it <コンテナ名> bash"としてコンテナ内部に入ってコマンド打っていましたが、Laravelに専用のコマンドがありますので、今回はそちらを使っていきます。
VSCodeのターミナルから、"./vendor/bin/sail mysql <DB名前>"と入力しましょう。
mysqlに接続
 ./vendor/bin/sail mysql gundb
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
--省略--
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| gundb               |     <←DBが作成されている>
| information_schema |
| performance_schema |
| testing             |
+--------------------+
4 rows in set (0.00 sec)
mysql> select database();
+------------+
| database() |
+------------+
| gundb      |  <←接続もされている>
+------------+
1 row in set (0.00 sec)
# テーブルはあるのかと言うと...
mysql> show tables;
Empty set (0.01 sec)    -- 空っぽです
mysql>quit      #←  ひとまず抜けますそこで、sessionテーブルを作成することに。
コマンド実行
./vendor/bin/sail artisan session:table
   INFO  Migration created successfully.  
 ./vendor/bin/sail artisan migrate
   INFO  Preparing database.  
  Creating migration table
................. 1秒 DONE
 INFO  Running migrations. 
................. 1秒 DONEテーブルが出来たか確認します。
テーブルの確認
./vendor/bin/sail mysql  gundb
---省略----
mysql>mysql> show tables;
+------------------+
| Tables_in_gundb |
+------------------+
| migrations      |
| sessions           |      <←session テーブルが作成されている>
+------------------+
2 rows in set (0.01 sec)その後、laravel Sailを再起動すると、無事起動できました。
localhost:8573

以上です。


