49 lines
1.4 KiB
Markdown
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만 저장하는 것이 좋습니다.
|
|
|