<진실의 방 01. 우리가 마이그레이션을 대하는 자세>

강민수·2021년 12월 20일
0

진실의 방

목록 보기
14/26
post-thumbnail

이번 포스팅은 백엔드 개발자라면 한 번은 겪는 db 데이터 날림에 대한 얘기가 되겠다. 필자 역시, 갓 프리즈마라는 것을 배우고 이제 마이그레이션을 시작한 시점에 벌어진 일이기에... 매우 당황했지만, 그 다음날부터 갖은 시도와 노력으로 이럴 때 어떻게 스스로 대처할 수 있는 지에 대한 나름의 나만의 해결 프로세스를 만들었다.

그래서 이번에는 그 문제의 발단부터 향후 필자가 어떻게 문제를 해결했는 지에 대해 간략히 소개해 보고자 한다.

01. 문제의 서막

필자는 프리즈마를 처음 배우고 미션을 진행하고 있었다. 그리고 오후 시간이 되어, 해당 미션에 대한 리뷰를 가지는 시간을 가졌다. 그러던 중 다른 팀원의 스키마 코드를 보던 중, 프로덕트 테이블에서 amount의 단위가 float가 더 좋다는 것을 그때 처음 봤다. 그래서 바로 스키마에 들어가 int로 되어있던 다위만 float로 바꿨다. 그리고 저장한 뒤에 해당 테이블에도 다시 버전을 업데이트 해야 하니까.... 당연히 npx prisma migrate dev;를 하고 엔터.

잘 되는 것 같았다.... 그런데 몇 초 후. 이런 메시지가 나오는 것이 아닌가?

√ Drift detected: Your database schema is not in sync with your migration history.
We need to reset the PostgreSQL database "prototyping" at "localhost:5432".
Do you want to continue? All data will be lost. ... yes

일단, 너의 db 스키마가 너의 마이그레이션 버전하고 안 맞는다는 내용이 감지되었다고 한다. 그래서 기본적으로 싱크를 맞추기 위해 이 프리즈마라는 놈은 맞춰 주겠다고 언급한다. 그런데 대신에 너의 db 속에 데이터는 사라질 것이라고 경고한다....

처음에는 다 사라진다고 하는데 뭔가 잘못 쳐서 그런 가 보다 하고, no를 기입했고, 그때까지만 해도 데이터는 잘 살아 있었다. 그리고 다시 마이그레이션
명령어를 입력했지만, 여전히 해당 오류가 나왔다. 그래서 설마 뭐 별거 있겠어 하고 yes를 누른 순간.

내 db 속 데이터에는 원자 폭탄이 떨어지고 말았다... 설마 싶어 mysql로 테이블을 조회했는데...

보이는 가? empty set.... 그렇다. 데이터가 진짜 다 사라락 사라진 것이다...

그래서 이 부분에 대해 소헌님께 바로 라이브 상으로 질의를 드렸으나... 당장 바로 해답을 찾을 수는 없었다. 결국 그래서 해당 db를 가슴 속에 고이 묻고 그냥 새로운 db를 만들어서 거기에 새롭게 마이그레이션을 진행했다.

이때만해도, 이게 여기서 끝인 줄로만 인식했기에... ㅋㅋㅋㅋ

================To be continued=========================

profile
개발도 예능처럼 재미지게~

0개의 댓글