DEV WIKI
백엔드 · 문제 해결 가이드

Prisma P2021·P2022 오류로 테이블·열이 없다고 나와요

Prisma P2021·P2022가 발생할 때 실행 환경, 실제 테이블·열, migration 기록과 배포 순서를 확인하는 방법을 설명합니다.

빠른 답변

P2021은 현재 데이터베이스에 테이블이 없고 P2022는 열이 없다는 뜻입니다. 오류가 난 환경의 대상 데이터베이스와 실제 스키마를 확인하고, `prisma migrate status`로 migration 파일과 적용 기록을 비교한 뒤 안전한 배포 절차를 결정합니다.

적용 범위
이 가이드의 시작 증상과 각 분기 조건이 일치하는 경우문맥: 바이브 코딩
출처
Prisma
출처 확인일
2026-08-29
최종 검토
2026-08-29
수정일
2026-08-29
대상
사이트 운영자, 웹 에이전시, 프리랜서
오류·수정 제보 (새 창에서 열림)

이 가이드가 맞는 경우

  • 애플리케이션 오류 메시지
  • 데이터베이스 오류
  • 빌드 성공, 배포 실패

상황별 다음 단계

호스팅사·개발자에게 전달할 내용

변경 전 기록

  • 오류가 난 테이블·열, 적용된 migration ID, 대상 환경을 기록합니다.
  • 데이터베이스 접속 문자열과 운영 데이터 원문은 전달하지 않습니다.

알아둘 점

오류 코드와 원문으로 없는 대상이 테이블인지 열인지 먼저 구분합니다.

오류원문확인 대상
P2021The table {table} does not exist in the current database.대상 데이터베이스에 테이블이 있는지 확인합니다.
P2022The column {column} does not exist in the current database.대상 테이블에 열이 있는지 확인합니다.

확인 순서

  1. 오류가 난 애플리케이션이 실제로 사용하는 DATABASE_URL의 데이터베이스와 환경을 확인합니다. 값 자체는 공개하지 않습니다.
  2. 오류가 가리키는 테이블·열이 해당 데이터베이스에 실제로 존재하는지 읽기 전용 스키마 조회로 확인합니다.
  3. Prisma 모델의 @map, @@map과 오류에 표시된 실제 데이터베이스 이름을 비교합니다.
  4. npx prisma migrate status로 저장소의 prisma/migrations와 대상 데이터베이스의 _prisma_migrations 기록을 비교합니다.
  5. 배포 로그에서 Prisma Client 생성 시점과 migration 적용 시점을 비교합니다.

결과별 분기

P2021: 테이블이 없음

The table {table} does not exist in the current database. 문서에서 대상 환경, 테이블 이름과 migration 상태를 확인합니다.

P2022: 열이 없음

The column {column} does not exist in the current database. 문서에서 열 이름, 모델 매핑, 실제 스키마와 migration 상태를 확인합니다.

Pending migration이 있음

해당 migration SQL에 필요한 테이블·열 변경이 들어 있는지 검토합니다. 운영 환경에서는 백업과 되돌리기 절차를 확인한 뒤 CI/CD의 prisma migrate deploy 단계로 적용합니다. 이 명령은 실제 데이터베이스 schema drift를 탐지하지 않으므로 적용 뒤 읽기 전용 스키마 조회와 동일 요청 재검사가 필요합니다.

Migration 기록은 일치하지만 실제 스키마가 다름

다음을 비교합니다.

  • 애플리케이션이 예상한 데이터베이스에 연결됐는지
  • 운영 데이터베이스에서 수동 변경이나 hotfix가 있었는지
  • 적용된 migration 파일이 나중에 수정·삭제됐는지
  • Prisma Client가 현재 schema.prisma에서 생성됐는지

운영 환경에서 하지 않을 조치

  • prisma migrate reset은 데이터베이스를 초기화하므로 실행하지 않습니다.
  • prisma migrate dev는 개발 환경용이므로 운영에서 실행하지 않습니다.
  • prisma db push로 migration history를 건너뛰지 않습니다.
  • 테이블·열을 직접 추가하거나 삭제하기 전에 migration SQL, 데이터 영향, 복구 방법을 검토합니다.

담당자에게 전달할 자료

  1. P2021 또는 P2022 오류 원문과 발생 시각
  2. 환경 이름과 비밀값을 제거한 데이터베이스 호스트·이름
  3. 없는 것으로 표시된 테이블·열 이름
  4. prisma migrate status 결과와 마지막 배포 커밋
  5. 최근 schema·migration·데이터베이스 수동 변경 시각

출처

같은 상황의 가이드

참고 자료

Errors | Prisma Documentation (새 창에서 열림)

Prisma · 공식 자료 · 확인 범위: P2021은 현재 데이터베이스에 테이블이 없다는 오류입니다., P2022는 현재 데이터베이스에 열이 없다는 오류입니다. · 확인일: 2026-08-29

prisma migrate status | Check Migration Status | Prisma Documentation (새 창에서 열림)

Prisma · 공식 자료 · 확인 범위: prisma migrate status는 로컬 migration 파일과 대상 데이터베이스의 migration 기록을 비교합니다., 적용되지 않은 migration, 서로 달라진 migration history, 실패한 migration을 상태로 보고합니다. · 확인일: 2026-08-29

Development and production | Prisma Documentation (새 창에서 열림)

Prisma · 공식 자료 · 확인 범위: migrate dev와 migrate reset은 개발 환경에서만 사용합니다., 운영·테스트 환경에서는 migrate deploy로 pending migration을 적용합니다., migrate deploy는 실제 데이터베이스 schema drift를 탐지하지 않습니다. · 확인일: 2026-08-29

Troubleshooting | Prisma Documentation (새 창에서 열림)

Prisma · 공식 자료 · 확인 범위: prisma db push나 수동 스키마 변경처럼 migration을 사용하지 않은 변경은 migration history와 실제 스키마의 차이를 만들 수 있습니다., migration history와 실제 스키마의 차이는 개발 환경의 shadow database를 사용해 탐지합니다. · 확인일: 2026-08-29