Lỗi khi phân tích tệp cấu hình YAML: yaml-cpp


10

Tôi đang sử dụng lệnh sau (máy Windows) với phiên bản shell MongoDB: 3.0.7:

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

Nội dung của tập tin mongod.cfg được đưa ra dưới đây:

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

Bắt lỗi dưới đây:

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

Các câu hỏi tương tự không có giải pháp cho việc này.

Những gì tôi đã thử:

  1. Tôi đang sử dụng dấu cách (không phải tab)
  2. Tôi đã kết nối bằng cách lưu tệp ở định dạng ASCII, vì nó đã được đề cập trong một trong những bài đăng mà tệp cấu hình Mongod không nên được lưu ở định dạng không phải ACSII. Ngay cả trong UTF-8.

Xin hãy giúp tôi với.

Câu trả lời:


10

Các thông báo lỗi cho biết dòng và cột cụ thể nơi trình phân tích cú pháp YAML gặp sự cố với tệp cấu hình của bạn, nhưng nếu bạn không quen với định dạng này, có thể khó tìm ra những gì được mong đợi.

Cần có hai bộ thay đổi để cấu hình YAML hợp lệ của bạn :

  1. Thêm một "không gian" giữa systemLog.pathstorage.dbPathkhóa và giá trị của họ

    YAML yêu cầu khoảng trắng giữa các cặp khóa / giá trị, do đó, báo cáo: "lỗi ở dòng 4, cột 8: giá trị bản đồ bất hợp pháp".

  2. Xóa dấu ngoặc kép khỏi giá trị đường dẫn của bạn

    YAML diễn giải các dấu gạch chéo ngược bên trong các chuỗi được trích dẫn là giới thiệu một ký tự thoát, do đó báo cáo: "lỗi ở dòng 3, cột 16: ký tự thoát không xác định". Để thay thế, bạn cũng có thể để lại đường dẫn được trích dẫn nhưng thoát khỏi dấu gạch chéo ngược ( \\) hoặc sử dụng dấu gạch chéo về phía trước.

Cấu hình sau sẽ hoạt động (giả sử "G:\NodeApps\data\"có quyền truy cập thư mục và tệp chính xác):

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

Có một số người kiểm tra trực tuyến cho cú pháp YAML có thể hữu ích để khắc phục sự cố (ví dụ: YAML Lint ).


2

yaml KHÔNG chấp nhận tab, bạn phải sử dụng không gian thay vì 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

ở trên là tệp mongod.cfg của tôi,
ví dụ giữa bảo mật: và ủy quyền, phải là khoảng trắng , tab không hợp lệ sẽ cung cấp cho bạn lỗi ở trên tiêu đề.

bạn nên xác nhận tập tin cấu hình của bạn tại

xác nhận yaml


0
  1. Ổ đĩa "NodeApps, Data, log in G" phải tồn tại.
  2. Không gian phải tồn tại giữa "đường dẫn: G:"
  3. Tất cả các dòng phải là một khoảng cách không gian.

    Nhật ký hệ thống:

    đích: tập tin

    đường dẫn: G: / NodeApps / data / log

    lưu trữ:

    dbPath: G: / NodeApps / dữ liệu


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.