# 마이그레이션 1003 실행 가이드 ## ❌ 현재 에러 ``` column "source_menu_objid" does not exist ``` **원인**: `menu_info` 테이블에 `source_menu_objid` 컬럼이 아직 추가되지 않음 ## ✅ 해결 방법 ### 방법 1: psql 직접 실행 (권장) ```bash # 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 복사하여 실행: ```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 설정 확인 후: ```bash # 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. 컬럼이 추가되었는지 확인 ```sql 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. 인덱스 확인 ```sql 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 접속 정보 찾기 ### 환경 변수 확인 ```bash # .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" 에러 → 이미 실행됨. 무시하고 진행 가능