Prisma 활용한 DB 변경 작업 (Mysql -> Postgresql)
안녕하세요 꿀푸입니다.
예약 포스팅 관련 데이터를 저장하고 관리해주는 DB 라이브러리로 Prisma 를 사용하였습니다. 이유는 테이블을 객체 형식으로 생성 해주어 코딩 시 오류 체크 등의 편리함, SQL 쿼리문 대신 JSON 형식의 문법을 통해서 데이터를 조작할 수 있는 등등의 장점이 있어 선택을 하였고 사용법도 매우 간편하였구요.
Prisma 와 클라우드 기반의 PlanetScale DB 를 연동하여 데이터를 저장하고 있었는데 이게 무료 Plan 에서 제공하는 사용량을 초과하는 문제가 발생을 해서(언제 끊길지 모르는 불안함...) 서버 설치 방식의 Postgresql로 변경 작업을 진행하였습니다.
Prisma 초기 설정 및 기존 DB 접속 관련 설정이 되어 있는 상태에서 진행을 하였으며 매우 쉽게 처리할 수 있어 30분 내외로 걸린 듯 합니다.
먼저 DB 접속 관련 정보를 수정 합니다. .env에 DATABASE_URL 부분을 수정하여 줍니다.
DATABASE_URL="postgresql://:@/?schema=public”
만약 Password에 !@# 같은 특수 문자가 있을 경우 아래 처럼 오류가 발생을 하며 percent Encoding 형식으로 변환하여 입력하여야 합니다. 여기 사이트에 접속하여 각 문자열에 대해 확인 가능합니다.
예) ! -> %21, $ -> %24
Error: P1013: The provided database string is invalid. invalid port number in database URL. Please refer to the
documentation in https://www.prisma.io/docs/reference/database-reference/connection-urls for constructing a correct connection string. In some cases, certain characters must be escaped. Please check the string for any illegal characters.
다음으로 Schema 파일을 수정 합니다. Provider 부분을 postgresql 로 변경하여 줍니다.
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
shadowDatabaseUrl = env("SHADOW_DATABASE_URL")
referentialIntegrity = "prisma"
}
만약 기존 DB에서 사용하던 Data Type이 postgresql에서는 지원을 안하는 문제가 발생된다면 아래 표를 참고 해서 적절한 Type으로 변경을 해주어야 합니다.
모든 작업이 완료 되면 아래 명령어로 schema 파일과 DB Schema 간 동기화를 수행해 줍니다. (테이블이 없다면 자동 생성)
$ npx prisma db push
나머지 소스 내 데이터 조작 관련된 부분은 수정 필요 없이 제대로 작동하는 걸 볼 수 있습니다. :-)
Posting by https://honeybeerbear.xyz/
Leave Prisma 활용한 DB 변경 작업 (Mysql -> Postgresql) to:
Read more #hive-101145 posts
Best Posts From 꿀푸
We have not curated any of honeybeerbear's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.