kèo chấp bóng đá hôm nay, cảnh báo và tin nhắn nhật ký được tạo trong mã máy chủ phải được tạo bằng cách sử dụngEREPORT
hoặc anh em họ cũ của nóELOG
. Việc sử dụng chức năng này đủ phức tạp để yêu cầu một số giải thích.
Có hai yếu tố bắt buộc cho mỗi thông báo: mức độ nghiêm trọng (từDebug
đếnPanic
) và một văn bản tin nhắn chính. Ngoài ra, có các yếu tố tùy chọn, trong số đó phổ biến nhất là mã định danh kèo chấp bóng đá hôm nay tuân theo các quy ước SQLState của SQL Spec.EREPORT
Bản thân nó chỉ là một macro shell tồn tại chủ yếu cho sự thuận tiện của cú pháp để tạo ra thông báo trông giống như một cuộc gọi chức năng duy nhất kèo chấp bóng đá hôm nay mã nguồn C. Tham số duy nhất được chấp nhận trực tiếp bởiEREPORT
là mức độ nghiêm trọng. Văn bản tin nhắn chính và bất kỳ yếu tố tin nhắn tùy chọn nào được tạo bằng cách gọi các chức năng phụ trợ, chẳng hạn nhưerrmsg
, kèo chấp bóng đá hôm nayEREPORT
cuộc gọi.
Một cuộc gọi điển hình đếnEREPORT
Có thể trông như thế này:
EREPORT (kèo chấp bóng đá hôm nay,
Điều này chỉ định mức độ nghiêm trọng của kèo chấp bóng đá hôm nayERROR
(một kèo chấp bóng đá hôm nay chạy bộ). Theerrcode
cuộc gọi Chỉ định mã kèo chấp bóng đá hôm nay SQLSTATE bằng cách sử dụng macro được xác định trongSRC/bao gồm/Utils/errcodes.h
. Theerrmsg
cuộc gọi cung cấp văn bản tin nhắn chính.
Bạn cũng sẽ thường xuyên thấy kiểu cũ này, với một bộ dấu ngoặc đơn xung quanh các cuộc gọi chức năng phụ trợ:
EREPORT (kèo chấp bóng đá hôm nay,
dấu ngoặc đơn được yêu cầu trướcPostgreSQLPhiên bản 12, nhưng bây giờ là tùy chọn.
Đây là một ví dụ phức tạp hơn:
EREPORT (kèo chấp bóng đá hôm nay,
Điều này minh họa việc sử dụng mã định dạng để nhúng các giá trị thời gian chạy vào một văn bản tin nhắn. Ngoài ra, một tùy chọnGợi ýxôngTin nhắn được cung cấp. Các cuộc gọi chức năng phụ trợ có thể được viết theo bất kỳ thứ tự nào, nhưng thông thườngerrcode
vàerrmsg
xuất hiện đầu tiên.
Nếu mức độ nghiêm trọng làERROR
hoặc cao hơn,EREPORT
Hủy bỏ thực thi truy vấn hiện tại và không trả lại cho người gọi. Nếu mức độ nghiêm trọng thấp hơnERROR
, EREPORT
Trả về bình thường.
Các thói quen phụ trợ có sẵn choEREPORT
là:
errcode (sqlerrcode)
Chỉ định mã định danh kèo chấp bóng đá hôm nay SQLSTATE cho điều kiện. Nếu thói quen này không được gọi, định danh kèo chấp bóng đá hôm nay mặc định làerrCode_Internal_error
Khi mức độ nghiêm trọng của kèo chấp bóng đá hôm nay làERROR
hoặc cao hơn,errcode_warning
Khi mức kèo chấp bóng đá hôm nay làCẢNH BÁO
, nếu không (choThông báo
và bên dưới)errcode_successful_completion
. Mặc dù các mặc định này thường thuận tiện, luôn luôn nghĩ liệu chúng có phù hợp hay không trước khi bỏ quaerrcode ()
cuộc gọi.
errmsg (const char *msg, ...)
Chỉ định văn bản thông báo kèo chấp bóng đá hôm nay chính và có thể các giá trị thời gian chạy để chèn vào nó. Chèn được chỉ định bởiSprintf
-Style Mã định dạng. Ngoài các mã định dạng tiêu chuẩn được kèo chấp bóng đá hôm nay nhận bởiSprintf
, Mã định dạng%m
có thể được sử dụng để chèn thông báo kèo chấp bóng đá hôm nay được trả về bởiStrerror
Đối với giá trị hiện tại củaerrno
. [15] %m
Không yêu cầu bất kỳ mục nhập tương ứng nào kèo chấp bóng đá hôm nay danh sách tham số choerrmsg
. Lưu ý rằng chuỗi tin nhắn sẽ được chạy quaGetText
Để bản địa hóa có thể trước khi mã định dạng được xử lý.
errmsg_Internal (const char *msg, ...)
giống nhưerrmsg
, ngoại trừ chuỗi tin nhắn sẽ không được dịch cũng như không được bao gồm kèo chấp bóng đá hôm nay từ điển thông điệp quốc tế hóa. Điều này nên được sử dụng choKhông thể xảy raHồiCác trường hợp có lẽ không đáng để sử dụng nỗ lực dịch thuật trên.
16969_17056
giống nhưerrmsg
, nhưng với sự hỗ trợ cho các dạng số nhiều khác nhau của thông điệp.fmt_singular
là định dạng số ít tiếng Anh,fmt_plural
là định dạng số nhiều tiếng Anh,n
là giá trị số nguyên xác định dạng số nhiều là cần thiết và các đối số còn lại được định dạng theo chuỗi định dạng đã chọn. Để biết thêm thông tin, xemPhần 54.2.2.
errdetail (const char *msg, ...)
Cung cấp tùy chọnchi tiếtTin nhắn; Điều này sẽ được sử dụng khi có thêm thông tin có vẻ không phù hợp để đưa vào thông điệp chính.errmsg
.
errdetail_Internal (const char *msg, ...)
giống nhưerrdetail
, ngoại trừ chuỗi tin nhắn sẽ không được dịch cũng như không được bao gồm kèo chấp bóng đá hôm nay từ điển thông điệp quốc tế hóa. Điều này nên được sử dụng cho các thông điệp chi tiết không đáng để sử dụng nỗ lực dịch thuật, vì chúng quá kỹ thuật để có ích cho hầu hết người dùng.
18644_18734
giống nhưerrdetail
, nhưng với sự hỗ trợ cho các hình thức số nhiều khác nhau của thông điệp. Để biết thêm thông tin, xemPhần 54.2.2.
errdetail_log (const char *msg, ...)
giống nhưerrdetail
Ngoại trừ chuỗi này chỉ đi đến nhật ký kèo chấp bóng đá hôm nay chủ, không bao giờ với kèo chấp bóng đá hôm nay khách. Nếu cả haierrdetail
(hoặc một kèo chấp bóng đá hôm nay những tương đương của nó ở trên) vàerrdetail_log
được sử dụng sau đó một chuỗi đi đến máy khách và chuỗi kia vào nhật ký. Điều này rất hữu ích cho các chi tiết kèo chấp bóng đá hôm nay quá nhạy cảm với bảo mật hoặc quá cồng kềnh để đưa vào báo cáo được gửi đến máy khách.
19654_19748
giống nhưerrdetail_log
, nhưng với sự hỗ trợ cho các hình thức số nhiều khác nhau của thông điệp. Để biết thêm thông tin, xemPhần 54.2.2.
errhint (const char *msg, ...)
Cung cấp tùy chọngợi ýxôngTin nhắn; Điều này sẽ được sử dụng khi đưa ra các đề xuất về cách khắc phục vấn đề, trái ngược với các chi tiết thực tế về những gì đã sai.errmsg
.
errcontext (const char *msg, ...)
Thông thường không được gọi trực tiếp từEREPORT
Trang web tin nhắn; đúng hơn là nó được sử dụng kèo chấp bóng đá hôm nayERROR_CONTEXT_STACK
Các chức năng gọi lại để cung cấp thông tin về bối cảnh xảy ra kèo chấp bóng đá hôm nay, chẳng hạn như vị trí hiện tại trong hàm PL. Chuỗi thông báo được xử lý theo cách tương tự như đối vớierrmsg
. Không giống như các chức năng phụ trợ khác, điều này có thể được gọi nhiều hơn một lần mỗiEREPORT
cuộc gọi; Do đó, các chuỗi liên tiếp được cung cấp được kết hợp với việc tách các dòng mới.
errPoseition (int cursorpos)
Chỉ định vị trí văn bản của một kèo chấp bóng đá hôm nay chuỗi truy vấn. Hiện tại nó chỉ hữu ích cho các lỗi được phát hiện trong các giai đoạn phân tích từ vựng và cú pháp của xử lý truy vấn.
errTable (quan hệ rel)
Chỉ định một mối quan hệ có tên và tên lược đồ nên được đưa vào dưới dạng các trường phụ trong báo cáo kèo chấp bóng đá hôm nay.
errTableCol (quan hệ rel, int attnum)
Chỉ định một cột có tên, tên bảng và tên lược đồ nên được đưa vào dưới dạng các trường phụ trợ trong báo cáo kèo chấp bóng đá hôm nay.
errTableConstraint (quan hệ rel, const char *Conname)
Chỉ định một ràng buộc bảng có tên, tên bảng và tên lược đồ nên được đưa vào làm các trường phụ trong báo cáo kèo chấp bóng đá hôm nay. Các chỉ mục nên được coi là ràng buộc cho mục đích này, cho dù chúng có liên quan hay khôngPG_Constraint
mục nhập. Cẩn thận vượt qua mối quan hệ heap cơ bản, không phải chính chỉ mục, nhưrel
.
errdatatype (oid datatypeoid)
Chỉ định một kiểu dữ liệu có tên và tên lược đồ nên được đưa vào làm các trường phụ trong báo cáo kèo chấp bóng đá hôm nay.
22750_22809
Chỉ định một ràng buộc tên miền có tên, tên miền và tên lược đồ nên được đưa vào dưới dạng các trường phụ trong báo cáo kèo chấp bóng đá hôm nay.
errcode_for_file_access ()
là một hàm tiện lợi chọn một định danh lỗi SQLState thích hợp cho kèo chấp bóng đá hôm nay cuộc gọi hệ thống liên quan đến truy cập tệp. Nó sử dụng đã lưuerrno
Để xác định mã kèo chấp bóng đá hôm nay nào sẽ tạo. Thông thường, điều này nên được sử dụng kết hợp với%m
Trong văn bản thông báo kèo chấp bóng đá hôm nay chính.
errcode_for_socket_access ()
23512_23641
errHidestMt (bool hid_stmt)
có thể được gọi để chỉ định sự đàn ápTuyên bố:
Phần của một tin nhắn kèo chấp bóng đá hôm nay nhật ký Postmaster. Nói chung, điều này là phù hợp nếu văn bản tin nhắn bao gồm câu lệnh hiện tại.
errHidecontext (bool hid_ctx)
Có thể được gọi để chỉ định việc đàn ápBối cảnh:
Phần của một tin nhắn trong nhật ký Postmaster. Điều này chỉ nên được sử dụng cho các thông báo gỡ kèo chấp bóng đá hôm nay dài dòng trong đó việc bao gồm ngữ cảnh lặp đi lặp lại sẽ làm mờ nhật ký quá nhiều.
nhiều nhất là một kèo chấp bóng đá hôm nay các chức năngerrTable
, errTableCol
, errTableConstraint
, errdatatype
hoặcErrdomainConstraint
nên được sử dụng kèo chấp bóng đá hôm nay mộtEREPORT
Gọi. Các chức năng này tồn tại để cho phép các ứng dụng trích xuất tên của một đối tượng cơ sở dữ liệu được liên kết với điều kiện kèo chấp bóng đá hôm nay mà không phải kiểm tra văn bản thông báo kèo chấp bóng đá hôm nay có khả năng local hóa.PostgreSQL9.3, phạm vi bảo hiểm hoàn chỉnh chỉ tồn tại đối với các kèo chấp bóng đá hôm nay lớp 23 (vi phạm ràng buộc toàn vẹn), nhưng điều này có thể được mở rộng trong tương lai.
Có chức năng cũELOG
Điều đó vẫn được sử dụng rất nhiều. MỘTELOG
CALL:
ELOG (cấp, "Chuỗi định dạng", ...);
hoàn toàn tương đương với:
25572_25630
Lưu ý rằng mã kèo chấp bóng đá hôm nay SQLSTATE luôn được mặc định và chuỗi tin nhắn không phải là dịch. Vì thế,ELOG
Chỉ nên được sử dụng cho các kèo chấp bóng đá hôm nay nội bộ và ghi nhật ký gỡ kèo chấp bóng đá hôm nay cấp thấp. Bất kỳ thông điệp nào có khả năng được người dùng thông thường quan tâm nên đi quaEREPORT
. Tuy nhiên, có đủ nội bộHồiKhông thể xảy raHồiKiểm tra kèo chấp bóng đá hôm nay hệ thốngELOG
vẫn được sử dụng rộng rãi; nó được ưa thích cho những tin nhắn đó vì sự đơn giản của nó.
Lời khuyên về việc viết các thông báo kèo chấp bóng đá hôm nay tốt có thể được tìm thấy trongPhần 53.3.
[15]nghĩa là giá trị hiện tại khiEREPORT
Cuộc gọi đã đạt được; thay đổi củaerrno
kèo chấp bóng đá hôm nay các thói quen báo cáo phụ trợ sẽ không ảnh hưởng đến nó. Điều đó sẽ không đúng nếu bạn viếtStrerror (errno)
rõ ràng kèo chấp bóng đá hôm nayerrmsg
27026_27073