はじめに
Laravel を使ったアプリ開発中に発生した "SQLSTATE[42S02]: Base table or view not found: 1146 Table 'laravel.sessions' doesn't exist" エラーについて、解決方法を記録しておきます。
書こうと思ったきっかけ
個人的に PHP のキャッチアップをしたくて Laravel に取り組んでいます。
個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。
今回はセッション周りでハマったエラーが発生したため、初学者による備忘録として記録しておきます。
内容
エラーの内容
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'laravel.sessions' doesn't exist
これは Laravel のセッションドライバに database
を使っている場合に、sessions
テーブルが存在しないと発生するエラーです。
解決手順
1. .env
ファイルの確認
SESSION_DRIVER=database
この設定により、Laravelは sessions
テーブルを利用してセッションを管理しようとします。
2. セッションテーブル用マイグレーション作成
すでにマイグレーションが存在する場合はスキップしてOKです。
docker compose exec php-app php artisan session:table
3. マイグレーションを実行
docker compose exec php-app php artisan migrate
これにより sessions
テーブルが DB に作成されます。
4. Laravel のキャッシュをクリア(念のため)
docker compose exec php-app php artisan config:clear
docker compose exec php-app php artisan route:clear
docker compose exec php-app php artisan view:clear
まとめ
Laravelのセッションをdatabase
で管理する際は、事前にsessions
テーブルをマイグレーションで作成しておく必要があります。
今回のような500エラーも、ログとマイグレーションの状態を確認することで解決できました。
今後もトラブル対応を学びに変えていきたいと思います...!