Ошибка разбора файла конфигурации YAML: yaml-cpp


10

Я использую следующую команду (Windows-машина) с версией оболочки MongoDB: 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. Я не пытался сохранить файл в формате ASCII, так как в одном из сообщений упоминалось, что файл конфигурации Mongod не следует сохранять в формате, отличном от ACSII. Даже в UTF-8.

Пожалуйста, помогите мне с этим.

Ответы:


10

В сообщениях об ошибках указывается конкретная строка и столбец, в которых у синтаксического анализатора YAML есть проблема с вашим файлом конфигурации, но если вы не знакомы с форматом, может быть трудно определить, что ожидается.

Два набора изменений необходимы, чтобы сделать вашу конфигурацию допустимой YAML :

  1. Добавить «пространство» между systemLog.pathи storage.dbPathключей и их значения

    YAML требует пробела между парами ключ / значение, поэтому сообщает: «ошибка в строке 4, столбец 8: недопустимое значение карты».

  2. Удалите двойные кавычки из ваших значений пути

    YAML интерпретирует обратную косую черту внутри строк в кавычках как ввод escape-символа, поэтому сообщает: «ошибка в строке 3, столбец 16: неизвестный escape-символ». В качестве альтернативы вы также можете оставить путь в кавычках, но либо избежать обратной косой черты ( \\), либо использовать прямую косую черту .

Следующая конфигурация должна работать (при условии, что у "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

выше мой файл mongod.cfg,
например, между security: и authorization, должен быть пробел, табуляция неверна, вы увидите ошибку выше в заголовке.

Вы должны всегда проверять свой конфигурационный файл в

проверить Ямл


0
  1. Диск NodeApps, Data, log in G должен существовать.
  2. Пространство должно существовать между "путь: G:"
  3. Вся линия должна быть на одном расстоянии.

    системный журнал:

    назначение: файл

    Путь: G: / NodeApps / данные / Журнал

    место хранения:

    dbPath: G: / NodeApps / data


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.