🧩 문제 상황
Jenkins 환경에서 migration 자동화를 구성하던 중,
Django migration 단계에서 빌드가 멈추는 문제가 발생했다.
문제 상황은 단순했다.
updated_at → action_at
처럼 필드명을 변경한 뒤:
python manage.py makemigrations
를 수행했는데,
CI 환경에서 프로세스가 종료되지 않았다.
🚨 원인 분석
필드명을 변경하는 경우, migration 도구 들은 '변경'인지, '기존 컬럼 삭제' + '신규 컬럼 생성'인지 알 수가 없다.
그래서 Django migration은 rename 상황에서 자동으로 판단하지 않고 질문을 한다.
Was this field renamed? [y/N]
여기서:
- Y → rename / alter 처리
- N → 기존 컬럼 삭제 + 신규 컬럼 생성
으로 동작한다.
문제는 Jenkins 같은 CI 환경에서는 interactive input을 받을 수 없다는 점이었다.
다른 옵션 중 아래
--noinput
옵션은 자동으로 N 처리 (기존 컬럼 삭제 + 신규 컬럼 생성) 되기 때문에,
의도치 않게 create/delete migration이 생성될 수 있었다.
🛠 해결
최종적으로는 아래 파이프 방식으로 처리했다.
yes y | python manage.py makemigrations
📌 Django vs Alembic(FastAPI) Migration 차이
이번 이슈를 통해 Django migration과 Alembic의 차이도 체감하게 되었다.
Django Migration
- rename 어느 정도 자동 감지
- interactive 기반 질문 존재
- 자동화 수준 높음 (약 semi-auto-migration 느낌)
Alembic(FastAPI)
반면 Alembic은:
alembic revision --autogenerate
를 사용해도 rename 자동 감지가 약한 편이다.
그래서 보통:
op.alter_column(...)
같은 migration 코드를 직접 수정하게 된다.
대신 interactive prompt는 거의 없어서 CI 환경에서는 단순한 편이었다.
🔥 한 줄 요약
Django migration은 auto성의 위한 interactive prompt를 제공한다.
fastapi migration은 alembic 에서 확인하기 어렵고, 직접 migration 변형 코드를 참고 해보아야 한다.
'회고 & 기록 > 기타 경험기' 카테고리의 다른 글
| [자격증] AWS SAA-C03 응시 후기 (26년 8월) (3) | 2026.08.04 |
|---|---|
| [ORM] 협업 환경에서 db migration 기준 맞추기 (1) | 2026.05.14 |
| [트러블슈팅] 람다 - 파이썬 3.10 → 3.12 업데이트 이후 에러 발생 (0) | 2026.05.06 |
| [트러블슈팅] 페이지네이션 + 랜덤 정렬에서 중복 데이터 발생 문제 해결 (0) | 2026.05.06 |
| [세미나 자료 공유] 파이썬 딥다이브 (0) | 2026.05.05 |