เกิดข้อผิดพลาดในการแยกวิเคราะห์ไฟล์กำหนดค่า YAML: yaml-cpp


10

ฉันใช้คำสั่งต่อไปนี้ (เครื่อง Windows) กับรุ่น MongoDB shell: 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 ตีความเครื่องหมายแบ็กสแลชภายในสตริงที่ยกมาเป็นการแนะนำตัวอักขระเลี่ยงดังนั้นรายงาน: "ข้อผิดพลาดที่บรรทัด 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. ทุกสายจะต้องมีระยะห่างหนึ่งช่องว่าง

    systemlog:

    ปลายทาง: ไฟล์

    เส้นทาง: G: / NodeApps / ข้อมูล / บันทึก

    การจัดเก็บ:

    dbPath: G: / NodeApps / data


-4

"\" ควรถูกแทนที่ด้วยเครื่องหมายทับสองครั้ง ("\") เมื่ออยู่ใน windows

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.