피드로 돌아가기
Dev.toDatabase
원문 읽기
SQLite 상태 동기화 오해 해결을 통한 데이터 연속성 확보
I Kept Recreating My Django Superuser Every Time I Switched Computers — Until I Finally Understood What Was Happening
AI 요약
Context
Django 기반의 SmartDuka 시스템 개발 과정에서 코드 Migration과 Database State를 동일시하여 발생한 데이터 소실 문제. .gitignore에 등록된 SQLite 파일로 인해 머신 변경 시마다 Schema만 복구되고 실제 Record는 유실되는 아키텍처적 오해 발생.
Technical Solution
- Migration의 역할 정의: Database Structure(Table, Column) 생성 및 변경에 국한된 Schema 관리 도구임을 명확히 인지
- Database State 분리: Schema를 정의하는 Migration 파일과 실제 Record를 담고 있는 SQLite 파일의 물리적 분리 구조 파악
- 데이터 연속성 확보 전략: db.sqlite3 파일을 직접 전송하여 User 및 Transactional Data의 물리적 상태를 유지하는 방식 채택
- 실행 순서 최적화: db.sqlite3 복제 후 Migration 명령을 실행하여 기존 데이터의 손실 없이 Schema를 업데이트하는 순서 정립
- 확장 경로 설계: 수동 파일 전송의 한계를 극복하기 위해 PostgreSQL 기반의 Shared Database 전환 계획 수립
실천 포인트
- Migration이 데이터 자체를 백업하거나 복구하지 않는다는 점을 명확히 구분할 것 - 로컬 DB 사용 시 .gitignore 설정과 데이터 동기화 전략을 일치시킬 것 - Schema 변경 사항이 반영된 최신 DB 파일을 먼저 배치한 후 migrate를 수행하여 데이터 무결성을 유지할 것 - 프로젝트 규모 확장 시 SQLite에서 PostgreSQL 등 클라이언트-서버 아키텍처 DB로의 전환 시점을 검토할 것