YAML構成ファイルの解析エラー:yaml-cpp


10

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

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

設定を有効なYAMLにするには、2つの変更セットが必要です

  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

上記は私のmongod.cfgファイルです。
たとえば、セキュリティ:と承認の間、スペースである必要があります。タブが無効な場合、上記のタイトルのエラーが表示されます。

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

yamlを検証する


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

    システムログ:

    宛先:ファイル

    パス:G:/ NodeApps / data / log

    ストレージ:

    dbPath:G:/ NodeApps / data


-4

「\」は、ウィンドウ内ではダブルスラッシュ(「\」)に置き換える必要があります

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.