Błąd podczas analizowania pliku konfiguracyjnego YAML: yaml-cpp

10

Używam następującego polecenia (komputer z systemem Windows) z wersją powłoki MongoDB: 3.0.7:

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

Zawartość pliku mongod.cfg podano poniżej:

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

Otrzymuję poniższy błąd:

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

Podobne pytania nie mają na to rozwiązania.

Co już próbowałem:

  1. Używam spacji (nie tabulatorów)
  2. Próbowałem zapisać plik w formacie ASCII, ponieważ w jednym z postów wspomniano, że plik konfiguracyjny Mongod nie powinien być zapisywany w formacie innym niż ACSII. Nawet w UTF-8.

Proszę, pomóż mi z tym.

Raj Wadhwa
źródło

Odpowiedzi:

10

Komunikaty o błędach wskazują konkretną linię i kolumnę, w której parser YAML ma problem z plikiem konfiguracyjnym, ale jeśli nie znasz formatu, może być trudno ustalić, czego się spodziewać.

Wymagane są dwa zestawy zmian, aby twoja konfiguracja była poprawna YAML :

  1. Dodaj „przestrzeń” pomiędzy systemLog.pathi storage.dbPathkluczami i ich wartości

    YAML wymaga spacji między parami klucz / wartość, więc zgłasza: „błąd w linii 4, kolumna 8: niedozwolona wartość mapy”.

  2. Usuń podwójne cudzysłowy z wartości ścieżki

    YAML interpretuje ukośniki odwrotne w cytowanych ciągach jako wprowadzenie znaku zmiany znaczenia, więc zgłasza: „błąd w wierszu 3, kolumna 16: nieznany znak zmiany znaczenia”. Alternatywnie możesz zostawić cytowaną ścieżkę, ale albo uciec od ukośników odwrotnych ( \\), albo użyć ukośników do przodu.

Poniższa konfiguracja powinna działać (przy założeniu, że "G:\NodeApps\data\"ma poprawne uprawnienia do katalogu i plików):

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

Istnieje kilka testerów online dla składni YAML, które mogą być przydatne do rozwiązywania problemów (np .: YAML Lint ).

Stennie
źródło
2

yaml NIE akceptuje tabulacji, musisz użyć spacji zamiast tabulacji

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

powyżej znajduje się mój plik mongod.cfg,
na przykład między bezpieczeństwem: a autoryzacją, musi być spacja, tab jest nieprawidłowy, da ci błąd powyżej w tytule.

powinieneś zawsze sprawdzić poprawność pliku konfiguracyjnego na

zatwierdź yaml

hoogw
źródło
0
  1. Dysk „NodeApps, Data, log in G” musi istnieć.
  2. Pomiędzy „path: G:” musi istnieć spacja
  3. Wszystkie linie muszą mieć jedną odległość odstępu.

    systemLog:

    miejsce docelowe: plik

    ścieżka: G: / NodeApps / data / log

    przechowywanie:

    dbPath: G: / NodeApps / data

BehrouzMoslem
źródło
-4

„\” należy zastąpić podwójnym ukośnikiem („\”) w systemie Windows

użytkownik119421
źródło