작업 오류 처리
개요
이 페이지에서는 MongoDB Rust 드라이버를 사용하여 MongoDB 작업을 수행할 때 발생할 수 있는 오류에 대해 설명합니다. 드라이버가 발생시키는 작업 오류 유형을 이해하면 이를 처리하거나 오류 원인 코드를 수정하기 위한 적절한 조치를 취할 수 있습니다.
참고
이 페이지에서는 작업 오류 처리에 대해서만 설명합니다. MongoDB 또는 드라이버에 다른 문제가 발생하는 경우 다음 리소스를 방문하세요.
MongoDB deployment에 연결할 때 발생할 수 있는 문제에 대한 잠재적 해결 방법은 연결 문제 해결 을 참조하세요.
이슈 & 도움말 페이지에서 버그 보고, 드라이버 기여, 추가 리소스 찾기에 대한 정보를 확인할 수 있습니다.
질문, 토론 또는 일반적인 기술 지원을 위한 MongoDB Community 포럼
오류 유형
운전자 가 작업을 수행하는 동안 오류가 발생하면 오류 유형.
Error
유형에는 발생한 오류의 유형을 설명하는 kind
필드가 포함되어 있습니다. kind
필드의 열거형 값은 ErrorKind입니다.. ErrorKind
열거형에는 다음을 포함하여 다양한 종류의 오류에 대한 변형이 있습니다.
InvalidArgument
: 메서드에 잘못된 인수를 제공했습니다.Authentication
: 인증 중에 드라이버에 오류가 발생했습니다.ServerSelection
: 클라이언트가 작업을 위한 서버를 선택할 수 없습니다.Write
: 쓰기 작업 중에 오류가 발생했습니다.Transaction
: 트랜잭션 중에 오류가 발생했습니다.
예를 들어, 이미 collection에 있는 _id
필드 값을 복제하는 삽입 작업을 시도하면, 드라이버는 Error
인스턴스를 반환하고 다음 오류 메시지를 출력합니다.
Error: Error { kind: Write(WriteError(WriteError { code: 11000, code_name: None, message: "E11000 duplicate key error collection: db.test_coll index: _id_ dup key: { _id: 1 }", details: None })), labels: {}, wire_version: None, source: None }
앞의 오류 메시지에서 kind
필드의 값은 Write
입니다. 이러한 유형의 오류에 대해 자세히 알아보려면 이 가이드의 쓰기 오류 유형 섹션을 참조하세요.
연결 오류
동시 작업 오류가 발생하면 연결 풀이 지워져 서버와의 연결이 중단될 수 있습니다. 이 상황에서 드라이버는 kind
필드의 값이 ConnectionPoolCleared
인 Error
유형을 발생시킵니다. 오류 메시지에는 동시 작업이 실패한 이유가 설명되어 있습니다.
이 오류를 해결하기 위해 연결 풀을 조정하는 방법을 알아보려면 MongoDB Server 매뉴얼 의 연결 풀 설정 조정 을 참조하세요.
오류가 발생한 상황에 따라 드라이버는 다음 오류 메시지에 표시된 것처럼 오류에 RetryableWriteError
레이블을 추가할 수 있습니다.
Error { kind: ConnectionPoolCleared { message: "Connection pool for localhost:27017 cleared because another operation failed with: Kind: I/O error: timed out, labels: {}" }, labels: {"RetryableWriteError"}, wire_version: None, source: None }
이 레이블은 오류가 쓰기 재시도 가능 오류임을 나타내며, 이는 드라이버가 한 번 재시도한다는 의미입니다.
쓰기 오류 유형
드라이버가 쓰기 작업을 수행하는 동안 오류가 발생하면 kind
필드 값이 Write
인 Error
인스턴스를 발생시킵니다. 변형의 Write
본문은 열거형 WriteFailure 입니다. ,WriteError 유형의 값을사용합니다. 또는 WriteConcernError.
쓰기 고려 (write concern) 오류
쓰기 작업을 수행할 때 드라이버가 지정된 쓰기 고려 (write concern)를 충족할 수 없는 경우 드라이버에서 WriteConcernError
오류가 발생합니다. 예를 들어, 노드가 3개인 복제본 세트의 작업에 쓰기 고려 (write concern)를 majority
로 지정하고, 쓰기 작업이 하나의 노드에만 전파되면 드라이버는 이 오류를 반환합니다.
쓰기 고려에 대해 자세히 알아보려면 MongoDB Server 매뉴얼에서 쓰기 고려를 참조하세요.
WriteError
드라이버는 쓰기 고려 (write concern) 충족과 관련이 없는 쓰기 작업을 수행할 때 발생하는 오류에 대해 WriteError
오류를 발생시킵니다. 이 오류의 원인은 여러 가지가 있으므로 WriteError
유형에는 쓰기 오류의 유형과 오류의 원인을 설명하는 필드가 포함되어 있습니다.
예를 들어 드라이버는 collection의 스키마 유효성 검사 규칙을 위반하는 collection에 문서를 삽입하려고 하면 WriteError
오류를 발생시킵니다. collection에 quantity
필드의 값이 int
유형이어야 하는 규칙이 있다고 가정합니다. quantity
값이 "three"
인 문서를 삽입하려고 하면 드라이버는 다음 오류 메시지를 인쇄합니다.
Error: Error { kind: Write(WriteError(WriteError { code: 121, code_name: None, message: "Document failed validation", details: Some(Document({"failingDocumentId": Int32(1), "details": Document({"operatorName": String("$jsonSchema"), "title": String("Numerical Validation"), "schemaRulesNotSatisfied": Array(...)})})) })), labels: {}, wire_version: None, source: None }
앞의 오류 메시지에서 message
필드는 오류의 이유를 설명하고 details
필드는 실패한 작업에 대한 구체적인 세부 정보를 제공합니다. 이 오류를 해결하려면 스키마 유효성 검사 규칙을 준수하도록 문서를 수정하거나 유효성 검사를 우회해야 합니다.
스키마 유효성 검사에 대해 자세히 알아보려면 스키마 유효성 검사 가이드를 참조하세요 .