이글 보고 참고 했습니다.
글: https://jamie-em-lee.tistory.com/115
Prisma 스키마 동기화 중 Schema Drift 발생 시 데이터베이스 리셋 없이 해결하기
개요 내가 일하는 곳은 Prisma + PostgreSQL을 스택으로 한다. 프리즈마 스키마와 데이터베이스 스키마 동기화 과정 중에 발생한 스키마 드리프트(schema drift)를 어떻게 리셋 없이 해결했는지 작성해보
jamie-em-lee.tistory.com
글내용이 맞으며 저는 이상한짓을 해서 추가로 작업을 더 해야했습니다.
DateTime 에 기본값을 특정 날짜로 하려다 실패를 했는데 이후에 할줄을 몰라
/prisma/migrate 폴더를 주워 보기도 하고
db 에 _prisma_migrations 테이블을 지워보기도 했는데
이러면 더 꼬여버려서 db 지우고 다시하라는 애러가 뜬 상태였습니다.
reset 을 하면 말그대로 디비가 다 날아가서 텅빈 상태가 됩니다.
먼저 db 와 내 schema.prisma 와의 차이를 구합니다.
npx prisma migrate diff `
--from-schema-datasource .\prisma\schema.prisma `
--to-schema-datamodel .\prisma\schema.prisma `
--script > .\prisma\rollback.sql
VSCODE 에서 열어봅니다.
powershell 에서는 ` 글자(숫자1 왼족의 키) 가 멀티라인 명령어를 의미합니다.
powershell 에서 텍스트를 추출하면 utf-16 이 되는거 같습니다.
이 상태로는 사용할 수 없으니 utf-8 로 변경해줍니다.
[UTF-16] 이라고 표시된 부분을 클릭합니다.
상단에 Save with Encoding 누릅니다.
UTF-8 고릅니다.
UTF-8 with BOM 은 안해봤습니다. 글자 앞에 2글자의 특수값이 들어가는데 없어도 될꺼 같습니다.
npx prisma db execute `
--file .\prisma\rollback.sql `
--schema .\prisma\schema.prisma
쿼리를 전송합니다.
성공하면 이다음부터는 정상적으로 사용 가능합니다.
npx prisma migrate dev
저는 위에서한 뻘짓 때문에 살아나지 못했고
db 백업후에 다 날리고 reset 하고 마이그래이트 다시 진행했습니다.