3.8 KiB
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에서 실행
- DBeaver 또는 pgAdmin 실행
ilshin데이터베이스 연결- 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 설정 확인 후:
# 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: (환경 설정 파일에서 확인)
⚠️ 주의사항
- 백업 권장: 마이그레이션 실행 전 DB 백업 권장
- 권한 확인: ALTER TABLE 권한이 필요합니다
- 백엔드 재시작 불필요: 컬럼 추가만으로 즉시 작동합니다
📞 문제 해결
"permission denied" 에러
→ postgres 사용자 또는 superuser 권한으로 실행 필요
"relation does not exist" 에러
→ 올바른 데이터베이스(ilshin)에 접속했는지 확인
"already exists" 에러
→ 이미 실행됨. 무시하고 진행 가능