본문 바로가기
노트/오류 노트

[오류 노트] : Command failed with error 48 (NamespaceExists): 'Collection already exists.

by 오주현 2022. 4. 5.
반응형
문제

멜론 프로젝트를 하면서 MongoDB에 저장된 인기 차트 데이터 중 "방탄소년단"을 "BTS"로 변경하려고 했는데 아래와 같은 오류가 떴다.

Command failed with error 48 (NamespaceExists): 'Collection already exists.

 

해결

해당 Collection이 이미 존재해서 그렇다.

매번 삭제해 주거나 삭제 로직을 만들어주면 된다.

 

    protected boolean dropCollection(String colNm) {

        boolean res = false;

        if (mongodb.collectionExists(colNm)) {
            mongodb.dropCollection(colNm);
            res = true;
        }
        return res;
    }

 

함수를 추가해 컬렉션이 존재할 때 삭제하는 코드를 짠다.

 

    /**
     * 컬렉션 삭제하기
     * @param colNm 삭제할 컬렉션 이름
     * @return 저장 결과
     * @throws Exception
     */
    int dropMelonCollection(String colNm) throws Exception;

인터페이스 매퍼에 추가해 준다.

 

    @Override
    public int dropMelonCollection(String colNm) throws Exception {

        log.info(this.getClass().getName() + ".dropMelonCollection");

        int res = 0;

        super.dropCollection(colNm);

        res = 1;

        log.info(this.getClass().getName() + ".dropMelonCollection");

        return res;
    }

매퍼에 마저 코딩을 해준다.

 

쉽게 하려면 그냥 Collection을 삭제해 주면 된다.

반응형

댓글