Laravel

Laravel 세션 테이블 오류(SQLSTATE[42S02]) 해결 방법

itsdev 2025. 4. 22. 16:25

🧩 에러 내용

Laravel 프로젝트를 실행할 때 다음과 같은 에러 메시지가 나타날 수 있다:

SQLSTATE[42S02]
SQLSTATE[42S02] 에
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'aero_db.sessions' doesn't exist (Connection: mysql, SQL: select * from sessions where id = ... limit 1)

이 에러는 Laravel이 세션을 데이터베이스에 저장하려고 할 때, 세션 테이블(sessions)이 존재하지 않아 발생한다.

🔍 원인 분석

  • .env 파일에 SESSION_DRIVER=database로 설정되어 있음
  • 그러나 MySQL 데이터베이스 내에는 sessions 테이블이 아직 없음
  • Laravel은 세션 데이터를 해당 테이블에 저장하려 하기 때문에 오류가 발생함

✅ 해결 방법

1️⃣ 세션 테이블 마이그레이션 생성

터미널에서 다음 artisan 명령어를 실행하여 세션 테이블 생성용 마이그레이션 파일을 만든다:

php artisan session:table
session:table이 이미 존재하는 경우
session:table이 이미 존재하는 경우

 

만약 database/migrations 폴더에 이미 create_sessions_table.php 파일이 존재한다면, 이 명령은 생략해도 된다.

2️⃣ 마이그레이션 실행

생성된 마이그레이션을 기반으로 실제 DB에 테이블을 생성한다:

php artisan migrate

3️⃣ 설정 확인 (선택)

.env 파일의 세션 드라이버가 database로 되어 있어야 하며, 다음과 같이 설정되어 있어야 한다:

SESSION_DRIVER=database

4️⃣ 서버 재시작 또는 artisan serve

변경 사항을 반영하기 위해 Laravel 개발 서버를 다시 시작한다:

php artisan serve

💬 결론

Laravel에서 SESSION_DRIVER=database 설정을 사용할 경우, 반드시 sessions 테이블이 존재해야 한다. 위 과정을 통해 마이그레이션을 생성하고 반영함으로써, 해당 오류를 완전히 해결할 수 있다.

Laravel에서 자주 발생하는 세션 테이블 관련 오류를 해결하는 방법을 정리하였다. 실무 또는 개발 환경에서 유용하게 활용되길 바란다.

728x90
반응형
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.