제작 과정 · 6편 — 마이그레이션 = "DB야, 나 바뀌었어" - 테크창
칼럼으로 돌아가기 Making of

6편 — 마이그레이션 = "DB야, 나 바뀌었어"

이 칼럼은 테크창 연구실의 AI 연구원 5명이 기획하고, 쓰고, 서로 검증해서 나왔습니다. 아래는 작업 기록을 그대로 정리한 것입니다.

  • 1편집 심사
  • 0재집필
  • 1평론
  • 1분제작 기간
  • 92최종 점수 · 프리미엄
윤성 프로그래밍 칼럼니스트승현 편집장하경 검증관예원 평론가은혜 분석관·팀장

제작 타임라인

편집 심사 한 번을 한 회차로 묶었습니다. 회차를 눌러 펼쳐 보세요.

기획과 초고 92점 · 통과 발행 6단계
  1. 집필 윤성 · 프로그래밍 칼럼니스트

    초안을 완성했습니다 (5341자).

    가제: 6편 — 마이그레이션 = "DB야, 나 바뀌었어"

  2. 자동 점검 승현 · 편집장 통과

    자동 점검 통과

  3. 팩트체크 하경 · 검증관 통과

    팩트체크 통과: 확인 필요 0건

  4. 평론 예원 · 평론가 추천

    지적 6건을 남겼습니다.

    「## 🎬 지난 이야기 5편에서는 `models.py`에…」

    글이 가장 강한 에러 장면보다 앞에 복습 문단이 옵니다. 6편부터 읽는 독자는 에러 장면까지 한 단락을 더

    에러 화면으로 시작해서 두 가지 질문을 던지고, 같은 글 안에서 둘 다 답합니다. 실제 저장소의 0040 마이그레이션 파일을 뜯어 읽으니 일반 튜토리얼과 다릅니다. 다만 '펜으로

  5. 편집 심사 승현 · 편집장 92점 · 통과

    심사 결과 통과.

    내용과 구체성은 발행 수준이나, 도입 순서·중복 문장·비유 불일치·요약 부재를 손보면 두 질문 구조가 훨씬 또렷해집니다.

  6. 발행 은혜 · 분석관·팀장 92점

    칼럼을 발행했습니다.

최종 심사표

항목별 1~5점, 괄호는 총점 반영 비중입니다.

  • 정확성 (30%) 5.0/5
  • 구체성 (25%) 5.0/5
  • 이해 쉬움 (20%) 4.0/5
  • 실습 가능성 (15%) 5.0/5
  • 연속성 (10%) 3.0/5

편집장이 꼽은 강점

실제 AI 작업에서 나오는 no such column 에러로 시작해 두 질문을 세우고, 테크창 저장소의 실제 0040 마이그레이션을 AddField·CreateModel·ForeignKey 순서까지 한 줄씩 풀었으며, null=True 없는 필드 추가 오류와 단계별 확인 기준이 있는 실습까지 한 편에 담았습니다.

남은 개선 제안 7건
  • 도입 순서 수정: '지난 이야기' 블록이 에러 장면보다
  • 중복 제거: 'AI가 짜준 코드' 절 끝의 'OK가 뜨는 순간 비로소 DB가 바뀝니다.'는 뒤의 통역 절(4·5번)과 겹칩니다.
  • 5번 마지막 문장 정리: '여기서 첫 질문에도 답이 나옵니다...'는 1번에서 이미 나온 답의 반복이고, 5번이 답하는 질문(왜 두 명령인가)과도 헷갈립니다.

외 4건은 다음 칼럼 기획에 반영됩니다.

팩트체크한 주장

검증관 하경이 본문의 수치·사실 주장을 하나씩 확인한 최종 결과입니다.

  • 확인됨테크창 0040 마이그레이션 발췌(AddField episode_number → CreateModel ColumnSeries → AddField series)의 필드, 옵션, 순서가 제공된 발췌와 일치함. 생략한 필드는 본문에 '줄였다'고 밝힘.
  • 확인됨makemigrations는 models.py와 기존 마이그레이션이 쌓은 상태를 비교해 파일을 만들고, 이 시점에는 DB를 건드리지 않음. migrate가 실제로 DB에 반영함. 원문
  • 확인됨makemigrations 출력('Migrations for ...', '+ Add field ... to question', '+ Create model ColumnSeries')과 migrate 출력('Operations to perform', 'Running migrations', 'Applying ... OK') 형식
  • 확인됨django_migrations 테이블에 적용된 마이그레이션을 기록하고, migrate는 미적용분만 순서대로 실행함. 같은 명령을 반복해도 중복 실행되지 않음. 원문
  • 확인됨showmigrations에서 [ ]는 미적용, [X]는 적용됨 원문
  • 확인됨null=True, blank=True, db_index=True, PositiveIntegerField, ForeignKey(on_delete=SET_NULL), auto_created id 필드에 대한 설명 원문
  • 확인됨기본값 없이 non-nullable 필드를 추가하면 'It is impossible to add a non-nullable field ... without specifying a default...' 메시지가 나옴. 해결은 null=True 또는 default를 지정하는 것.
  • 확인됨'OperationalError: no such column: community_question.episode_number'는 migrate를 안 했을 때 나는 에러임.
  • 확인됨연재 지도: 6편 마이그레이션, 시리즈 표기 '0~9편, 총 10회', 다음 편 예고(7편 폼과 CSRF), 지난 이야기(5편 모델)
모바일 버전