Erro ao analisar o arquivo de configuração YAML: yaml-cpp

10

Estou usando o seguinte comando (máquina Windows) com a versão do shell do MongoDB: 3.0.7:

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

O conteúdo do arquivo mongod.cfg é fornecido abaixo:

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

Obtendo o erro abaixo:

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

Perguntas semelhantes não têm as soluções para isso.

O que eu já tentei:

  1. Estou usando espaços (não tabulações)
  2. Tentei salvar o arquivo no formato ASCII, como foi mencionado em uma das postagens que o arquivo de configuração do Mongod não deve ser salvo no formato não-ACSII. Nem mesmo em UTF-8.

Por favor me ajude com isso.

Raj Wadhwa
fonte

Respostas:

10

As mensagens de erro indicam a linha e coluna específicas em que o analisador YAML está tendo um problema com seu arquivo de configuração, mas se você não estiver familiarizado com o formato, pode ser difícil calcular o que é esperado.

São necessários dois conjuntos de alterações para tornar sua configuração válida YAML :

  1. Adicionar um "espaço" entre as systemLog.pathe storage.dbPathchaves e seus valores

    O YAML requer um espaço entre os pares chave / valor, portanto, reporta: "erro na linha 4, coluna 8: valor ilegal do mapa".

  2. Remova as aspas duplas dos valores do caminho

    O YAML interpreta barras invertidas dentro de seqüências de caracteres citadas como introduzindo um caractere de escape, então relata: "erro na linha 3, coluna 16: caractere de escape desconhecido". Como alternativa, você também pode deixar o caminho entre aspas, mas pode escapar das barras invertidas ( \\) ou usar barras invertidas.

A seguinte configuração deve funcionar (supondo que "G:\NodeApps\data\"tenha as permissões corretas de diretório e arquivo):

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

Existem vários testadores online para a sintaxe YAML que podem ser úteis para solucionar problemas (por exemplo: YAML Lint ).

Stennie
fonte
2

yaml NÃO aceita tab, você deve usar espaço em vez de tab

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

acima é o meu arquivo mongod.cfg,
por exemplo, entre segurança: e autorização, deve haver espaço, a guia é inválida, resultará no erro acima no título.

você sempre deve validar seu arquivo de configuração em

validar yaml

hoogw
fonte
0
  1. A unidade "NodeApps, Data, log in G" deve existir.
  2. O espaço deve existir entre "path: G:"
  3. Toda linha deve ter uma distância de espaço.

    registro do sistema:

    destination: file

    caminho: G: / NodeApps / data / log

    armazenamento:

    dbPath: G: / NodeApps / data

BehrouzMoslem
fonte
-4

"\" deve ser substituído por barra dupla ("\") quando estiver no Windows

user119421
fonte