【Laravel Sail】セッションテーブルが見つからないエラーの原因と対処法
目次
Laravel Sailプロジェクトで「SQLSTATE[42S02]: Base table or view not found」エラーが発生する理由と解決方法
環境: Laravel v11.20.0 (PHP v8.3.10)
エラーの概要
Laravel Sailを使用して新規にインストールしたプロジェクトを起動した際、以下のようなエラーメッセージが表示されることがあります。
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'laravel.sessions' doesn't exist (Connection: mysql, SQL: select * from `sessions` where `id` = uzE7kGoRqN0sUTVG6QIdRtjn7X53QLwwOPlKWYwO limit 1)
エラーの原因
このエラーは、Laravelがセッションを保存するために必要な sessions
テーブルがデータベースに存在しないために発生します。Laravel 11.xでは、セッションドライバーのデフォルト設定が database
になっている可能性があり、このテーブルが存在しないとエラーが発生します。
解決方法
1. Laravel Sailでコンテナを起動する
まず、Laravel Sailを使用してコンテナを起動します。以下のコマンドを実行してください。
./vendor/bin/sail up -d
これでコンテナがバックグラウンドで起動します。
2. セッションテーブルのマイグレーションを実行する
次に、以下のコマンドを実行して、sessions
テーブルをデータベースに作成します。Laravelにはデフォルトでセッションテーブルを作成するためのマイグレーションファイルが含まれているため、特別なファイル作成の必要はありません。
./vendor/bin/sail artisan migrate
これにより、Laravelが必要とするテーブルが作成され、エラーが解消されます。
3. セッションの保存方法を変更する(オプション)
データベースではなくファイルにセッションを保存するように設定を変更することも可能です。その場合は、.env
ファイルで SESSION_DRIVER
を file
に設定します。
SESSION_DRIVER=file
この設定を行うと、セッションデータは storage/framework/sessions
ディレクトリ内に保存されるようになります。
まとめ
Laravel 11.xでは、セッションドライバーのデフォルト設定が database
になっている可能性があり、セッションテーブルが存在しないとエラーが発生します。このエラーを解消するには、sail artisan migrate
を実行してセッションテーブルを作成するか、セッションの保存方法を file
に変更することで対応できます。