ERP-node/db/migrations/RUN_043_MIGRATION.md

1.4 KiB

마이그레이션 043: 이미지 컬럼을 TEXT 타입으로 변경

목적

Base64 인코딩된 이미지 데이터를 저장하기 위해 VARCHAR(500) 컬럼을 TEXT 타입으로 변경합니다.

영향받는 테이블

  • item_info.image
  • user_info.image (존재하는 경우)
  • 기타 image, img, picture, photo 이름을 가진 VARCHAR 컬럼들

실행 방법

Docker 환경

docker exec -i erp-node-db-1 psql -U postgres -d ilshin < db/migrations/043_change_image_columns_to_text.sql

로컬 PostgreSQL

psql -U postgres -d ilshin -f db/migrations/043_change_image_columns_to_text.sql

확인 방법

-- 변경된 컬럼 확인
SELECT 
    table_name,
    column_name,
    data_type,
    character_maximum_length
FROM information_schema.columns
WHERE table_schema = 'public'
AND column_name ILIKE '%image%'
ORDER BY table_name, column_name;

롤백 방법

-- 필요시 원래대로 되돌리기 (데이터 손실 주의!)
ALTER TABLE item_info ALTER COLUMN image TYPE VARCHAR(500);

주의사항

  • TEXT 타입은 길이 제한이 없으므로 매우 큰 이미지도 저장 가능합니다.
  • Base64 인코딩은 원본 파일 크기의 약 1.33배가 됩니다.
  • 5MB 이미지 → Base64: 약 6.7MB → 문자열: 약 6.7백만 자
  • 성능상 매우 큰 이미지는 파일 서버에 저장하고 URL만 저장하는 것이 좋습니다.