ERP-node/db/migrations/RUN_027_MIGRATION.md

3.1 KiB

027 마이그레이션 실행 가이드

개요

dept_info 테이블에 company_code 컬럼을 추가하는 마이그레이션입니다.

실행 방법

방법 1: Docker Compose를 통한 실행 (권장)

# 1. 현재 사용 중인 Docker Compose 파일 확인
cd /Users/kimjuseok/ERP-node

# 2. DB 컨테이너 이름 확인
docker ps | grep postgres

# 3. 마이그레이션 실행
docker exec -i <DB_CONTAINER_NAME> psql -U postgres -d ilshin < db/migrations/027_add_company_code_to_dept_info.sql

# 예시 (컨테이너 이름이 'erp-node-db-1'인 경우):
docker exec -i erp-node-db-1 psql -U postgres -d ilshin < db/migrations/027_add_company_code_to_dept_info.sql

방법 2: pgAdmin 또는 DBeaver를 통한 실행

  1. pgAdmin 또는 DBeaver 실행
  2. PostgreSQL 서버 연결:
    • Host: 39.117.244.52
    • Port: 11132
    • Database: plm
    • Username: postgres
    • Password: ph0909!!
  3. db/migrations/027_add_company_code_to_dept_info.sql 파일 내용을 복사
  4. SQL 쿼리 창에 붙여넣기
  5. 실행 (F5 또는 Execute 버튼)

방법 3: psql CLI를 통한 직접 연결

# 1. psql 설치 확인
psql --version

# 2. 직접 연결하여 마이그레이션 실행
psql -h 39.117.244.52 -p 11132 -U postgres -d plm -f db/migrations/027_add_company_code_to_dept_info.sql

마이그레이션 검증

마이그레이션이 성공적으로 실행되었는지 확인:

-- 1. company_code 컬럼 추가 확인
SELECT column_name, data_type, is_nullable, column_default
FROM information_schema.columns
WHERE table_name = 'dept_info' AND column_name = 'company_code';

-- 2. 인덱스 생성 확인
SELECT indexname, indexdef
FROM pg_indexes
WHERE tablename = 'dept_info' AND indexname = 'idx_dept_info_company_code';

-- 3. 데이터 마이그레이션 확인 (company_code가 모두 채워졌는지)
SELECT company_code, COUNT(*) as dept_count
FROM dept_info
GROUP BY company_code
ORDER BY company_code;

-- 4. NULL 값이 있는지 확인 (없어야 정상)
SELECT COUNT(*) as null_count
FROM dept_info
WHERE company_code IS NULL;

롤백 방법 (문제 발생 시)

-- 1. 인덱스 제거
DROP INDEX IF EXISTS idx_dept_info_company_code;

-- 2. company_code 컬럼 제거
ALTER TABLE dept_info DROP COLUMN IF EXISTS company_code;

주의사항

  1. 백업 필수: 마이그레이션 실행 전 반드시 데이터베이스 백업
  2. 운영 환경: 운영 환경에서는 점검 시간에 실행 권장
  3. 트랜잭션: 마이그레이션은 하나의 트랜잭션으로 실행됨 (실패 시 자동 롤백)
  4. 성능: dept_info 테이블 크기에 따라 실행 시간이 다를 수 있음

마이그레이션 내용 요약

  1. company_code 컬럼 추가 (VARCHAR(20))
  2. company_code 인덱스 생성
  3. 기존 데이터 마이그레이션 (hq_namecompany_code)
  4. company_code를 NOT NULL로 변경
  5. 기본값 'ILSHIN' 설정

관련 파일

  • 마이그레이션 파일: db/migrations/027_add_company_code_to_dept_info.sql
  • 백엔드 API 수정: backend-node/src/controllers/adminController.ts
  • 프론트엔드 API: frontend/lib/api/user.ts