ERP-node/db/migrations/RUN_MIGRATION_1003.md

3.8 KiB

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

현재 에러

column "source_menu_objid" does not exist

원인: menu_info 테이블에 source_menu_objid 컬럼이 아직 추가되지 않음

해결 방법

방법 1: psql 직접 실행 (권장)

# 1. PostgreSQL 접속 정보 확인
# - Host: localhost (또는 실제 DB 호스트)
# - Port: 5432 (기본값)
# - Database: ilshin
# - User: postgres

# 2. 마이그레이션 실행
cd /Users/kimjuseok/ERP-node
psql -h localhost -U postgres -d ilshin -f db/migrations/1003_add_source_menu_objid_to_menu_info.sql

# 또는 대화형으로
psql -h localhost -U postgres -d ilshin
# 그 다음 파일 내용 붙여넣기

방법 2: DBeaver / pgAdmin에서 실행

  1. DBeaver 또는 pgAdmin 실행
  2. ilshin 데이터베이스 연결
  3. SQL 편집기 열기
  4. 아래 SQL 복사하여 실행:
-- source_menu_objid 컬럼 추가
ALTER TABLE menu_info 
ADD COLUMN IF NOT EXISTS source_menu_objid BIGINT;

-- 인덱스 생성 (검색 성능 향상)
CREATE INDEX IF NOT EXISTS idx_menu_info_source_menu_objid 
ON menu_info(source_menu_objid);

-- 복합 인덱스: 회사별 원본 메뉴 검색
CREATE INDEX IF NOT EXISTS idx_menu_info_source_company 
ON menu_info(source_menu_objid, company_code);

-- 컬럼 설명 추가
COMMENT ON COLUMN menu_info.source_menu_objid IS '원본 메뉴 ID (복사된 경우만 값 존재)';

-- 확인
SELECT column_name, data_type, is_nullable
FROM information_schema.columns
WHERE table_name = 'menu_info' 
  AND column_name = 'source_menu_objid';

방법 3: Docker를 통한 실행

Docker Compose 설정 확인 후:

# Docker Compose에 DB 서비스가 있는 경우
docker-compose exec db psql -U postgres -d ilshin -f /path/to/migration.sql

# 또는 SQL을 직접 실행
docker-compose exec db psql -U postgres -d ilshin -c "
ALTER TABLE menu_info ADD COLUMN IF NOT EXISTS source_menu_objid BIGINT;
CREATE INDEX IF NOT EXISTS idx_menu_info_source_menu_objid ON menu_info(source_menu_objid);
CREATE INDEX IF NOT EXISTS idx_menu_info_source_company ON menu_info(source_menu_objid, company_code);
"

실행 후 확인

1. 컬럼이 추가되었는지 확인

SELECT column_name, data_type, is_nullable
FROM information_schema.columns
WHERE table_name = 'menu_info' 
  AND column_name = 'source_menu_objid';

예상 결과:

column_name        | data_type | is_nullable
-------------------|-----------|-------------
source_menu_objid  | bigint    | YES

2. 인덱스 확인

SELECT indexname 
FROM pg_indexes 
WHERE tablename = 'menu_info' 
  AND indexname LIKE '%source%';

예상 결과:

indexname
---------------------------------
idx_menu_info_source_menu_objid
idx_menu_info_source_company

3. 메뉴 복사 재시도

마이그레이션 완료 후 프론트엔드에서 메뉴 복사를 다시 실행하세요.

🔍 DB 접속 정보 찾기

환경 변수 확인

# .env 파일 확인
cat backend-node/.env | grep DB

# Docker Compose 확인
cat docker-compose*.yml | grep -A 10 postgres

일반적인 접속 정보

  • Host: localhost 또는 127.0.0.1
  • Port: 5432 (기본값)
  • Database: ilshin
  • User: postgres
  • Password: (환경 설정 파일에서 확인)

⚠️ 주의사항

  1. 백업 권장: 마이그레이션 실행 전 DB 백업 권장
  2. 권한 확인: ALTER TABLE 권한이 필요합니다
  3. 백엔드 재시작 불필요: 컬럼 추가만으로 즉시 작동합니다

📞 문제 해결

"permission denied" 에러

→ postgres 사용자 또는 superuser 권한으로 실행 필요

"relation does not exist" 에러

→ 올바른 데이터베이스(ilshin)에 접속했는지 확인

"already exists" 에러

→ 이미 실행됨. 무시하고 진행 가능