53.8. ÐÐ¾Ð»Ñ ÑообÑений Ñ Ð¾Ñибками и замеÑаниÑми
Ð ÑÑом Ñазделе опиÑÑваÑÑÑÑ Ð¿Ð¾Ð»Ñ, коÑоÑÑе могÑÑ ÑодеÑжаÑÑÑÑ Ð² ÑообÑениÑÑ ErrorResponse и NoticeResponse. ÐÐ»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ñипа Ð¿Ð¾Ð»Ñ Ð¾Ð¿ÑеделÑн Ñвой иденÑиÑикаÑионнÑй маÑкеÑ. ÐамеÑÑÑе, ÑÑо в ÑообÑении Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑÑÑ Ð¿Ð¾Ð»Ðµ лÑбого из ÑÑÐ¸Ñ Ñипов, но не болÑÑе одного Ñаза.
-
S ÐажноÑÑÑ: поле ÑодеÑжиÑ
ERROR,FATALилиPANIC(в ÑообÑении об оÑибке), либоWARNING,NOTICE,DEBUG,INFOилиLOG(в ÑообÑении Ñ Ð·Ð°Ð¼ÐµÑанием), либо пеÑеведÑннÑе знаÑÐµÐ½Ð¸Ñ (ÐШÐÐÐÐ, ÐÐÐÐÐ, ÐÐÐÐÐÐ, ÐÐ ÐÐУÐÐ ÐÐÐÐÐÐÐ, ÐÐÐÐЧÐÐÐÐ, ÐТÐÐÐÐÐ, ÐÐФÐÐ ÐÐЦÐЯ, СÐÐÐЩÐÐÐÐ, ÑооÑвеÑÑÑвенно). ÐÑо поле пÑиÑÑÑÑÑвÑÐµÑ Ð²Ñегда.-
V ÐажноÑÑÑ: поле ÑодеÑжиÑ
ERROR,FATALилиPANIC(в ÑообÑении об оÑибке) либоWARNING,NOTICE,DEBUG,INFOилиLOG(в ÑообÑении Ñ Ð·Ð°Ð¼ÐµÑанием). ÐÑо поле подобноS, но его ÑодеÑжимое никогда не пеÑеводиÑÑÑ. ÐÑиÑÑÑÑÑвÑÐµÑ ÑолÑко в ÑообÑениÑÑ , вÑдаваемÑÑ PostgreSQL веÑÑии 9.6 и новее.-
C Ðод: код SQLSTATE вÑданной оÑибки (Ñм. ÐÑиложение A). Ðе пеÑеводиÑÑÑ Ð½Ð° дÑÑгие ÑзÑки, пÑиÑÑÑÑÑвÑÐµÑ Ð²Ñегда.
-
M СообÑение: оÑновное ÑообÑение об оÑибке, пÑедназнаÑенное Ð´Ð»Ñ Ñеловека. Ðолжно бÑÑÑ ÑоÑнÑм, но кÑаÑким (обÑÑно в Ð¾Ð´Ð½Ñ ÑÑÑокÑ). ÐÑиÑÑÑÑÑвÑÐµÑ Ð²Ñегда.
-
D ÐеобÑзаÑелÑное дополниÑелÑное ÑообÑение об оÑибке, пеÑедаÑÑее более деÑалÑнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ пÑоблеме. ÐÐ¾Ð¶ÐµÑ Ð·Ð°Ð½Ð¸Ð¼Ð°ÑÑ Ð½ÐµÑколÑко ÑÑÑок.
-
H ÐодÑказка: необÑзаÑелÑное пÑедложение ÑеÑÐµÐ½Ð¸Ñ Ð¿ÑоблемÑ. Ðно должно оÑлиÑаÑÑÑÑ Ð¾Ñ Ð¿Ð¾Ð´Ñобного опиÑÐ°Ð½Ð¸Ñ Ñем, ÑÑо пÑÐµÐ´Ð»Ð°Ð³Ð°ÐµÑ ÑÐ¾Ð²ÐµÑ (не обÑзаÑелÑно Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑий во вÑÐµÑ ÑлÑÑаÑÑ ), а не ÑÑÑ Ð¸Ðµ ÑакÑÑ. ÐÐ¾Ð¶ÐµÑ ÑаÑполагаÑÑÑÑ Ð² неÑколÑÐºÐ¸Ñ ÑÑÑÐ¾ÐºÐ°Ñ .
-
P ÐозиÑиÑ: знаÑение Ð¿Ð¾Ð»Ñ Ð¿ÑедÑÑавлÑÐµÑ ÑелоÑиÑленное ÑиÑло в ASCII, ÑказÑваÑÑее на положение оÑибки в иÑÑ Ð¾Ð´Ð½Ð¾Ð¹ ÑÑÑоке запÑоÑа. ÐеÑвÑй Ñимвол Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð² позиÑии 1, пÑи ÑÑом позиÑии оÑÑÑиÑÑваÑÑÑÑ Ð¿Ð¾ Ñимволам, а не по байÑам.
-
p ÐнÑÑÑеннÑÑ Ð¿Ð¾Ð·Ð¸ÑиÑ: она опÑеделÑеÑÑÑ Ñак же, как поле
P, но оÑÑÐ°Ð¶Ð°ÐµÑ Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ оÑибки во внÑÑÑенне ÑгенеÑиÑованной команде, а не в ÑÑÑоке, пеÑеданной клиенÑом. ÐмеÑÑе Ñ ÑÑим полем вÑегда пÑиÑÑÑÑÑвÑÐµÑ Ð¿Ð¾Ð»Ðµq.-
q ÐнÑÑÑенний запÑоÑ: ÑекÑÑ Ð²Ð½ÑÑÑенне ÑгенеÑиÑованной командÑ, в коÑоÑой пÑоизоÑла оÑибка. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ, напÑимеÑ, SQL-запÑоÑ, вÑполнÑемÑй ÑÑнкÑией на PL/pgSQL.
-
W Ðде: ÑказÑÐ²Ð°ÐµÑ Ð½Ð° конÑекÑÑ, в коÑоÑом пÑоизоÑла оÑибка. РнаÑÑоÑÑее вÑÐµÐ¼Ñ Ð²ÐºÐ»ÑÑÐ°ÐµÑ ÑÑаÑÑиÑÐ¾Ð²ÐºÑ ÑÑека вÑзовов ÑекÑÑей ÑÑнкÑии на пÑоÑедÑÑном ÑзÑке и внÑÑÑенне ÑгенеÑиÑованнÑÑ Ð·Ð°Ð¿ÑоÑов. ÐапиÑи ÑÑаÑÑиÑовки ÑазделÑÑÑÑÑ Ð¿Ð¾ ÑÑÑокам, внаÑале поÑледнÑÑ.
-
s ÐÐ¼Ñ ÑÑ ÐµÐ¼Ñ: еÑли оÑибка ÑвÑзана Ñ Ð½ÐµÐºÐ¾ÑоÑÑм обÑекÑом Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , ÑÑо поле ÑодеÑÐ¶Ð¸Ñ Ð¸Ð¼Ñ ÑÑ ÐµÐ¼Ñ, к коÑоÑой оÑноÑиÑÑÑ Ð¾Ð±ÑÐµÐºÑ (еÑли ÑÐ°ÐºÐ°Ñ ÐµÑÑÑ).
-
t ÐÐ¼Ñ ÑаблиÑÑ: еÑли оÑибка ÑвÑзана Ñ Ð½ÐµÐºÐ¾ÑоÑой ÑаблиÑей, ÑÑо поле ÑодеÑÐ¶Ð¸Ñ Ð¸Ð¼Ñ ÑаблиÑÑ. (УзнаÑÑ Ð¸Ð¼Ñ ÑÑ ÐµÐ¼Ñ ÑаблиÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ из ÑооÑвеÑÑÑвÑÑÑего оÑделÑного полÑ.)
-
c ÐÐ¼Ñ ÑÑолбÑа: еÑли оÑибка ÑвÑзана Ñ Ð½ÐµÐºÐ¾ÑоÑÑм ÑÑолбÑом ÑаблиÑÑ, ÑÑо поле ÑодеÑÐ¶Ð¸Ñ Ð¸Ð¼Ñ ÑÑолбÑа. (ÐденÑиÑиÑиÑоваÑÑ ÑаблиÑÑ Ð¼Ð¾Ð¶Ð½Ð¾, обÑаÑивÑиÑÑ Ðº полÑм, ÑодеÑжаÑим Ð¸Ð¼Ñ ÑаблиÑÑ Ð¸ ÑÑ ÐµÐ¼Ñ.)
-
d ÐÐ¼Ñ Ñипа даннÑÑ : еÑли оÑибка ÑвÑзана Ñ Ð½ÐµÐºÐ¾ÑоÑÑм Ñипом даннÑÑ , ÑÑо поле ÑодеÑÐ¶Ð¸Ñ Ð¸Ð¼Ñ Ñипа. (УзнаÑÑ Ð¸Ð¼Ñ ÑÑ ÐµÐ¼Ñ Ñипа можно из ÑооÑвеÑÑÑвÑÑÑего полÑ.)
-
n ÐÐ¼Ñ Ð¾Ð³ÑаниÑениÑ: еÑли оÑибка ÑвÑзана Ñ Ð½ÐµÐºÐ¾ÑоÑÑм огÑаниÑением, ÑÑо поле ÑодеÑÐ¶Ð¸Ñ Ð¸Ð¼Ñ Ð¾Ð³ÑаниÑениÑ. ЧÑÐ¾Ð±Ñ ÑзнаÑÑ, к какой ÑаблиÑе или Ð´Ð¾Ð¼ÐµÐ½Ñ Ð¾Ð½Ð° оÑноÑиÑÑÑ, обÑаÑиÑеÑÑ Ðº полÑм, опиÑаннÑм вÑÑе. (Рданном конÑекÑÑе индекÑÑ ÑÑиÑаÑÑÑÑ Ð¾Ð³ÑаниÑениÑми, даже еÑли они бÑли ÑÐ¾Ð·Ð´Ð°Ð½Ñ Ð½Ðµ Ñ ÑинÑакÑиÑом огÑаниÑений.)
-
F Файл: Ð¸Ð¼Ñ Ñайла Ñ Ð¸ÑÑ Ð¾Ð´Ð½Ñм кодом, в коÑоÑом бÑла обнаÑÑжена оÑибка.
-
L СÑÑока: Ð½Ð¾Ð¼ÐµÑ ÑÑÑоки в иÑÑ Ð¾Ð´Ð½Ð¾Ð¼ коде, в коÑоÑой бÑла обнаÑÑжена оÑибка.
-
R ÐÑогÑамма: Ð¸Ð¼Ñ Ð¿ÑогÑÐ°Ð¼Ð¼Ñ Ð² иÑÑ Ð¾Ð´Ð½Ð¾Ð¼ коде, в коÑоÑой бÑла обнаÑÑжена оÑибка.
ÐÑимеÑание
ÐолÑ, ÑодеÑжаÑие имена ÑÑ ÐµÐ¼Ñ, ÑаблиÑÑ, ÑÑолбÑа, Ñипа даннÑÑ Ð¸ огÑаниÑениÑ, вÑдаÑÑÑÑ ÑолÑко Ð´Ð»Ñ Ð¾Ð³ÑаниÑенного ÑиÑла Ñипов оÑибок; Ñм. ÐÑиложение A. ÐлиенÑÑ Ð½Ðµ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑаÑÑÑиÑÑваÑÑ Ð½Ð° Ñо, ÑÑо пÑиÑÑÑÑÑвие одного из полей обÑзаÑелÑно влеÑÑÑ Ð¿ÑиÑÑÑÑÑвие дÑÑгого полÑ. СиÑÑемнÑе иÑÑоÑники оÑибок ÑÑÑанавливаÑÑ ÑвÑÐ·Ñ Ð¼ÐµÐ¶Ð´Ñ Ð½Ð¸Ð¼Ð¸, но полÑзоваÑелÑÑкие ÑÑнкÑии могÑÑ Ð¸ÑполÑзоваÑÑ ÑÑи Ð¿Ð¾Ð»Ñ Ð¿Ð¾-дÑÑгомÑ. ÐодобнÑм обÑазом, клиенÑÑ Ð½Ðµ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿Ð¾Ð»Ð°Ð³Ð°ÑÑÑÑ Ð½Ð° Ñо, ÑÑо ÑÑи Ð¿Ð¾Ð»Ñ ÑÑÑлаÑÑÑÑ Ð½Ð° акÑÑалÑнÑе обÑекÑÑ Ð² ÑекÑÑей базе даннÑÑ .
ÐÐ»Ð¸ÐµÐ½Ñ Ð¾ÑвеÑÐ°ÐµÑ Ð·Ð° ÑоÑмаÑиÑование оÑобÑажаемой инÑоÑмаÑии в ÑооÑвеÑÑÑвии Ñ ÐµÐ³Ð¾ нÑждами; в ÑаÑÑноÑÑи, он должен ÑазбиваÑÑ Ð´Ð»Ð¸Ð½Ð½Ñе ÑÑÑоки, как ÑÑебÑеÑÑÑ. Ð¡Ð¸Ð¼Ð²Ð¾Ð»Ñ Ð½Ð¾Ð²Ð¾Ð¹ ÑÑÑоки, вÑÑÑеÑаÑÑиеÑÑ Ð² полÑÑ ÑообÑÐµÐ½Ð¸Ñ Ð¾Ð± оÑибке, Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¾Ð±ÑабаÑÑваÑÑÑÑ, как ÑазÑÑÐ²Ñ Ð°Ð±Ð·Ð°Ñев, а не ÑÑÑок.