web-dev-qa-db-ja.com

YAML設定ファイルの解析エラー:yaml-cpp

MongoDBシェルバージョン3.0.7で次のコマンド(Windowsマシン)を使用しています。

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形式で保存するべきではないという投稿の1つで述べられているように、ファイルをASCII形式で保存してみました。UTF-8でも。

これで私を助けてください。

10
Raj Wadhwa

エラーメッセージは、YAMLパーサーが構成ファイルで問題を起こしている特定の行と列を示しますが、形式に慣れていない場合は、予期される内容を理解するのが難しい場合があります。

設定を行うには2セットの変更が必要です 有効な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 )。

10
Stennie

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ファイルです。
たとえば、セキュリティ:と承認の間、スペースである必要があります。タブが無効な場合、上記のタイトルのエラーが発生します。

常に設定ファイルを検証する必要があります

yamlを検証

2
hoogw
  1. 「NodeApps、Data、log in G」ドライブが存在している必要があります。
  2. 「パス:G:」の間にスペースが必要です
  3. すべての線は1スペースの距離でなければなりません。

    システムログ:

    宛先:ファイル

    パス:G:/ NodeApps/data/log

    ストレージ:

    dbPath:G:/ NodeApps/data

0
BehrouzMoslem