Skip to main content
Sonamu에서 자주 발생하는 데이터베이스 마이그레이션 관련 문제와 해결 방법을 다룹니다.

체크섬 파일 파싱 오류

증상

실행 시 다음과 같은 오류가 발생합니다:

원인

sonamu.lock 파일이 손상되었습니다. 일반적인 원인:
  1. Sync 중단 (Ctrl+C)으로 파일이 불완전하게 저장됨
  2. 파일이 빈 파일이거나 잘못된 JSON 형식
  3. 여러 프로세스가 동시에 파일을 수정함

해결 방법

1. 강제 재동기화 (권장)

--force 옵션은 기존 sonamu.lock을 삭제하고 처음부터 풀-싱크를 수행합니다. 이는 안전하며 모든 추적 자산이 다시 정합 상태로 맞춰집니다.

2. 파일 내용 확인

파일이 비어있거나 {}만 있다면 삭제 후 재생성하세요.

3. 예방 방법

  • Sync 중단 시 반드시 완료될 때까지 기다리기
  • 여러 터미널에서 동시에 pnpm dev 실행하지 않기

마이그레이션 파일 충돌

증상

원인

같은 날짜에 여러 마이그레이션을 생성하여 타임스탬프가 중복되었습니다.

해결 방법

1. 파일명 수동 변경

2. 타임스탬프 형식 사용

Sonamu는 YYYYMMDD_HHMMSS 형식을 지원합니다:

Generated Column 오류

증상

원인

PostgreSQL의 Generated Column을 수정하려 할 때 발생합니다. Generated Column은 다른 컬럼의 값으로 자동 계산되는 컬럼으로, 직접 수정할 수 없습니다.

해결 방법

1. Generated Column 삭제 후 재생성

2. entity.json 수정

타임스탬프 Precision 오류

증상

원인

PostgreSQL에서 timestamp 타입의 precision이 명시되지 않아 기본값과 불일치합니다.

해결 방법

1. entity.json에서 precision 명시

2. 마이그레이션 파일에서 수정

외래 키 제약 오류

증상

원인

참조되고 있는 레코드를 삭제하거나 수정하려 했습니다.

해결 방법

1. CASCADE 옵션 사용

2. 마이그레이션으로 수정

마이그레이션 롤백 실패

증상

원인

마이그레이션 파일에 down() 함수가 없거나 잘못 구현되었습니다.

해결 방법

1. down() 함수 구현

2. 복잡한 마이그레이션 롤백

마이그레이션 상태 불일치

증상

또는

원인

  1. 마이그레이션 파일이 삭제되었으나 DB에는 기록이 남아있음
  2. 여러 환경에서 마이그레이션을 다르게 적용함

해결 방법

1. 마이그레이션 테이블 확인

2. 잘못된 기록 제거

3. 마이그레이션 재적용

MySQL에서 PostgreSQL로 마이그레이션

증상

기존 MySQL 기반 프로젝트를 PostgreSQL로 전환 시 다양한 오류 발생

해결 방법

1. 데이터 타입 변경

2. Auto Increment 변경

3. 문자열 타입

4. Boolean 타입

5. JSON 타입

관련 문서