ERP-node/db/migrations/RUN_043_MIGRATION.md

49 lines
1.4 KiB
Markdown

# 마이그레이션 043: 이미지 컬럼을 TEXT 타입으로 변경
## 목적
Base64 인코딩된 이미지 데이터를 저장하기 위해 VARCHAR(500) 컬럼을 TEXT 타입으로 변경합니다.
## 영향받는 테이블
- `item_info.image`
- `user_info.image` (존재하는 경우)
- 기타 `image`, `img`, `picture`, `photo` 이름을 가진 VARCHAR 컬럼들
## 실행 방법
### Docker 환경
```bash
docker exec -i erp-node-db-1 psql -U postgres -d ilshin < db/migrations/043_change_image_columns_to_text.sql
```
### 로컬 PostgreSQL
```bash
psql -U postgres -d ilshin -f db/migrations/043_change_image_columns_to_text.sql
```
## 확인 방법
```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;
```
## 롤백 방법
```sql
-- 필요시 원래대로 되돌리기 (데이터 손실 주의!)
ALTER TABLE item_info ALTER COLUMN image TYPE VARCHAR(500);
```
## 주의사항
- TEXT 타입은 길이 제한이 없으므로 매우 큰 이미지도 저장 가능합니다.
- Base64 인코딩은 원본 파일 크기의 약 1.33배가 됩니다.
- 5MB 이미지 → Base64: 약 6.7MB → 문자열: 약 6.7백만 자
- 성능상 매우 큰 이미지는 파일 서버에 저장하고 URL만 저장하는 것이 좋습니다.