Files
sam-docs/changes/20260320_daily_work_logs_codebridge_migration_fix.md

4.1 KiB

일일업무일지 codebridge DB 이관 누락 수정

날짜: 2026-03-20 작업자: Claude Code 상태: 완료 (운영서버 적용 완료)

변경 개요

운영서버 MNG 일일업무일지 데이터가 조회/저장 불가 상태 발생. 원인은 DB 이관 마이그레이션(2026_03_19_200000)에서 daily_work_logs 테이블이 이관 대상(existingTables)에서 누락된 것.


원인 분석

발생 경위

  1. MNG 모델 DailyWorkLog$connectioncodebridge로 변경됨 (MNG 커밋 82adb7a3)
  2. 2026_03_19_200000_migrate_mng_tables_to_codebridge.php 마이그레이션에서:
    • codebridge DB에 빈 daily_work_logs, daily_work_log_items 테이블 스키마 생성
    • existingTables 배열에 daily_work_logs 미포함 → 데이터 미이관
  3. MNG 코드(모델 connection 변경)는 운영서버에 배포 완료, API 마이그레이션은 미실행 상태
  4. 결과: MNG가 codebridge DB를 바라보지만 테이블/데이터 없음 → 조회 빈 결과, 저장 에러

영향 범위

환경 이관 전 상태
운영서버 sam DB daily_work_logs 24건, daily_work_log_items 120건 (데이터 보존 상태)
운영서버 codebridge DB 테이블 미존재 (마이그레이션 미실행)
개발서버 codebridge DB 빈 테이블만 존재 (기존 데이터 없었음)

증상

  • 일일업무일지 화면에서 데이터가 전부 사라진 것처럼 보임
  • 저장 버튼 클릭 시 저장 실패 (codebridge DB에 테이블 없음)

수정 내용

새 마이그레이션 추가

파일: api/database/migrations/2026_03_20_120000_migrate_daily_work_logs_to_codebridge.php

동작 순서:

  1. Phase 1 (복사): sam → codebridge 데이터 복사 (부모 daily_work_logs → 자식 daily_work_log_items 순서)
    • sam DB에 테이블 없으면 스킵
    • codebridge에 이미 데이터가 있으면 중복 방지로 스킵
    • 복사 후 건수 검증 — 불일치 시 예외 발생(롤백)
  2. Phase 2 (삭제): sam 테이블 삭제 (자식 → 부모 역순, FK 안전)

배포 이력

1. 개발서버 (자동 배포)

API develop push → Jenkins 자동 배포 → migrate 실행
결과: sam에 테이블 없으므로 스킵 (정상)

2. 운영서버 (수동 적용)

Jenkins 자동 배포가 트리거되지 않아 수동 적용:

# 마이그레이션 파일 2개를 scp로 운영서버에 복사
scp → /tmp/ → sudo cp → /home/webservice/api/current/database/migrations/

# 마이그레이션 실행
cd /home/webservice/api/current && php artisan migrate --force

# 실행 결과:
# 2026_03_19_200000_migrate_mng_tables_to_codebridge ......... 3초 DONE
# 2026_03_20_120000_migrate_daily_work_logs_to_codebridge ... 97ms DONE

3. 이관 결과 검증

항목 결과
codebridge.daily_work_logs 24건 이관 완료
codebridge.daily_work_log_items 120건 이관 완료
sam.daily_work_logs 삭제 완료 (테이블 제거됨)
sam.daily_work_log_items 삭제 완료 (테이블 제거됨)

수정된 파일

파일 변경 내용
api/database/migrations/2026_03_20_120000_migrate_daily_work_logs_to_codebridge.php 신규 — daily_work_logs 데이터 이관 마이그레이션

확인 체크리스트

  • 운영서버 API php artisan migrate --force 실행
  • codebridge DB 데이터 건수 검증 (24건 logs + 120건 items)
  • sam DB 원본 테이블 삭제 확인
  • MNG 일일업무일지 데이터 조회 확인 (사용자 확인 필요)
  • MNG 일일업무일지 저장 기능 확인 (사용자 확인 필요)

교훈

DB 이관 마이그레이션 작성 시 existingTables 배열에 모든 이관 대상 테이블이 포함되었는지 반드시 검증할 것. 모델의 $connection 변경과 데이터 이관 마이그레이션은 동일 배포에서 함께 실행되어야 불일치가 발생하지 않는다.

관련 문서