67 CannotCreateIndex: Cannot create index
MongoDB의미
제약 조건이나 한도 때문에 인덱스 생성이 실패했다. 기존 데이터나 구성 때문에 MongoDB가 요청한 인덱스를 만들 수 없었다.
원인
컬렉션당 허용되는 최대 인덱스 수(64)를 초과했거나, 키가 너무 크거나, 호환되지 않는 옵션 조합(예: TTL 인덱스에 부적합한 필드 타입)인 경우다. 참고: 기존 데이터에 중복이 있는 상태에서 unique 인덱스를 생성하면 이 코드가 아니라 E11000 DuplicateKey가 발생한다.
해결 방법
인덱스 수 한도에 도달했다면 사용하지 않는 인덱스를 삭제한다($indexStats로 사용량 분석). 키 크기/타입 호환성과 옵션 조합을 확인한다. 큰 컬렉션에서는 부하가 낮을 때 인덱스를 생성한다(4.2부터 인덱스 생성이 쓰기를 오래 블로킹하지 않으며 background 옵션은 무시된다).
같은 데이터베이스의 다른 항목
- 48 NamespaceExistsNamespace (collection) already exists
- 11601 InterruptedOperation was interrupted
- 85 IndexOptionsConflictIndex already exists with different options / different name (다른 옵션/이름의 인덱스가 이미 존재)
- 27 IndexNotFoundIndex not found
- 79 UnknownReplWriteConcernUnknown replica set write concern
- 10107 NotWritablePrimarynot master / not writable primary
- 91 ShutdownInProgressThe server is in the process of shutting down (서버가 종료 중)