Supabase DATABASE_URL 연결 오류 해결: Prisma와 Render에서 확인할 것
Supabase DATABASE_URL 오류는 대부분 비밀번호 치환, 특수문자 인코딩, pooler 주소, Prisma schema, Render 환경변수 누락에서 발생합니다.
Supabase DATABASE_URL 연결 오류 해결: Prisma와 Render에서 확인할 것
바이브코딩으로 만든 웹을 실제 서비스로 만들 때 가장 자주 막히는 부분이 PostgreSQL 연결입니다. 특히 Supabase의 DATABASE_URL을 Render와 Prisma에 연결할 때 한 글자만 틀려도 migration이나 런타임 DB 요청이 실패합니다.
이 글은 바이브코딩 웹 배포 가이드의 DB 연결 보조 문서입니다.
1. DATABASE_URL 형식부터 확인합니다
Supabase PostgreSQL URI는 보통 아래 형태입니다.
postgresql://postgres:[YOUR-PASSWORD]@db.xxxxx.supabase.co:5432/postgres
또는 pooler 주소를 쓸 경우 아래처럼 보일 수 있습니다.
postgresql://postgres.xxxxx:[YOUR-PASSWORD]@aws-0-region.pooler.supabase.com:5432/postgres
중요한 것은 [YOUR-PASSWORD]를 실제 DB 비밀번호로 바꾸는 것입니다. 대괄호까지 그대로 남겨두면 연결되지 않습니다.
2. 비밀번호 특수문자는 percent-encoding이 필요할 수 있습니다
DB 비밀번호에 아래 문자가 있으면 URL에서 깨질 수 있습니다.
@ : / ? # [ ] ! $ & ' ( ) * + , ; =
예를 들어 비밀번호에 @가 있으면 DB host 구분자로 오해될 수 있습니다. 이 경우 Supabase 안내처럼 percent-encode 해야 합니다.
3. Render Environment Variables에 정확히 넣었는지 확인합니다
Render에는 코드가 아니라 Environment Variables에 넣습니다.
DATABASE_URL=postgresql://...
확인할 것:
- 키 이름이 정확히
DATABASE_URL인지 - 값 앞뒤에 공백이 없는지
- 따옴표를 잘못 포함하지 않았는지
- 로컬
.env와 Render 값이 서로 다른지 - Render 저장 후 재배포했는지
4. Prisma 7에서는 datasource URL을 코드에서 직접 관리할 수 있습니다
이 프로젝트는 Prisma adapter와 prisma.config.ts를 통해 DATABASE_URL을 읽습니다. 따라서 DB 연결 문제를 볼 때는 아래 파일들을 같이 확인해야 합니다.
prisma/schema.prisma
prisma.config.ts
src/lib/database-url.ts
src/lib/db.ts
실제 연결 확인 명령:
npm.cmd run db:generate
npm.cmd run db:deploy
npm.cmd run db:check
개발 중이라면:
npm.cmd run db:migrate
운영 배포에서는:
npm.cmd run db:deploy
5. schema가 포함된 DATABASE_URL인지 확인합니다
프로젝트가 PostgreSQL schema를 분리해서 쓰는 경우 DATABASE_URL에 schema 파라미터가 붙을 수 있습니다.
?schema=search_intel
이 값이 로컬과 운영에서 다르면 migration은 성공했는데 앱이 데이터를 못 찾는 상황이 생길 수 있습니다.
6. DB health endpoint로 운영 연결을 확인합니다
배포 후에는 브라우저가 아니라 서버에서 DB를 실제로 볼 수 있는지 확인해야 합니다.
Invoke-WebRequest -Uri "https://infofixhub.org/api/health/db" -UseBasicParsing
좋은 응답은 단순해야 합니다.
{
"ok": true
}
DB 비밀번호, host, full connection string을 health 응답에 노출하면 안 됩니다.
7. Render 배포 오류와 연결해서 봅니다
DATABASE_URL이 잘못되면 Render 배포 중 prisma migrate deploy 단계에서 실패할 수 있습니다. 이 경우 바이브코딩 Render 배포 오류 해결법을 같이 보면 원인을 좁히기 쉽습니다.
최종 체크리스트
- Supabase URI에서
[YOUR-PASSWORD]교체 - 특수문자 percent-encoding 확인
- Render에
DATABASE_URL저장 - 저장 후 재배포
npm.cmd run db:check성공- 운영
/api/health/db성공 - 민감정보 노출 없음
DB 연결이 정상화되면 바이브코딩 웹 배포 전체 과정에서 API Key, 도메인, Google 색인까지 이어서 점검하면 됩니다.