YAML 구성 파일 구문 분석 오류 : yaml-cpp


10

MongoDB 셸 버전에서 다음 명령 (Windows 시스템)을 사용하고 있습니다. 3.0.7 :

mongod --config "G:\NodeApps\mongod.cfg" --install

mongod.cfg 파일의 내용은 다음과 같습니다.

systemLog:
    destination: file
    path:"G:\NodeApps\data\log"
storage:
    dbPath:"G:\NodeApps\data"

아래 오류가 발생했습니다.

Error parsing YAML config file: yaml-cpp: error at line 4, column 8: illegal map value
try 'mongod --help' for more information

비슷한 질문에 대한 해결책이 없습니다.

내가 이미 시도한 것 :

  1. 공백을 사용하고 있습니다 (탭이 아님).
  2. Mongod 구성 파일을 비 ACSII 형식으로 저장해서는 안된다는 게시물 중 하나에서 언급 한 것처럼 ASCII 형식으로 파일을 저장하려고 시도했습니다. UTF-8조차도 아닙니다.

이것 좀 도와주세요.

답변:


10

오류 메시지는 YAML 파서가 구성 파일에 문제가있는 특정 행과 열을 나타내지 만 형식에 익숙하지 않은 경우 예상되는 것을 해결하기가 어려울 수 있습니다.

구성을 유효한 YAML 로 만들려면 다음 두 세트의 변경이 필요합니다 .

  1. 사이에 "공간"을 추가 systemLog.path하고 storage.dbPath키와 값

    YAML은 키 / 값 쌍 사이에 공백이 필요하므로 "4 행 오류, 8 행 : 잘못된 맵 값"을보고합니다.

  2. 경로 값에서 큰 따옴표를 제거하십시오

    YAML은 따옴표로 묶인 문자열 내부의 백 슬래시를 이스케이프 문자로 해석하므로 "3 행, 16 행 : 오류 이스케이프 문자"오류가보고됩니다. 다른 방법으로, 인용 된 경로를 그대로두고 백 슬래시 ( \\)를 이스케이프 하거나 슬래시를 사용할 수도 있습니다.

다음 구성이 작동해야합니다 ( "G:\NodeApps\data\"올바른 디렉토리 및 파일 권한이 있다고 가정 ).

systemLog:
    destination: file
    path: G:\NodeApps\data\log
storage:
    dbPath: G:\NodeApps\data

문제를 해결하는 데 유용한 YAML 구문에 대한 여러 온라인 테스터가 있습니다 (예 : YAML Lint ).


2

yaml은 탭을 허용하지 않습니다. 탭 대신 공백을 사용해야합니다

systemLog:
    destination: file
    path: c:\data\log\mongod.log
storage:
    dbPath: c:\data\db
security:
     authorization: enabled
net:
    bindIp: 127.0.0.1
    port: 27017

위의 my mongod.cfg 파일
입니다. 예를 들어 security :와 authorization 사이의 공간이어야합니다. 탭이 잘못되면 위의 오류가 발생합니다.

항상 설정 파일의 유효성을 검사해야합니다.

yaml의 유효성을 검사하십시오


0
  1. "NodeApps, 데이터, 로그인 G"드라이브가 존재해야합니다.
  2. "path : G :"사이에 공백이 있어야합니다
  3. 모든 선은 하나의 공간 거리 여야합니다.

    시스템 로그:

    대상 : 파일

    경로 : G : / NodeApps / 데이터 / 로그

    저장:

    dbPath : G : / NodeApps / 데이터


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.