5. Ðак пÑавилÑно ÑообÑиÑÑ Ð¾Ð± оÑибке #
ÐÑли Ð²Ñ Ð½Ð°Ð¹Ð´ÑÑе оÑÐ¸Ð±ÐºÑ Ð² Postgres Pro, дайÑе нам знаÑÑ Ð¾ ней. ÐлагодаÑÑ Ð²Ð°ÑÐµÐ¼Ñ Ð¾ÑÑÑÑÑ Ð¾Ð± оÑибке, Postgres Pro ÑÑÐ°Ð½ÐµÑ ÐµÑÑ Ð±Ð¾Ð»ÐµÐµ надÑжнÑм, Ð²ÐµÐ´Ñ Ð´Ð°Ð¶Ðµ пÑи Ñамом вÑÑоком каÑеÑÑве кода нелÑÐ·Ñ Ð³Ð°ÑанÑиÑоваÑÑ, ÑÑо каждÑй блок и ÐºÐ°Ð¶Ð´Ð°Ñ ÑÑнкÑÐ¸Ñ Postgres Pro бÑÐ´ÐµÑ ÑабоÑаÑÑ Ð²ÐµÐ·Ð´Ðµ и пÑи лÑбÑÑ Ð¾Ð±ÑÑоÑÑелÑÑÑÐ²Ð°Ñ .
СледÑÑÑие пÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿ÑÐ¸Ð·Ð²Ð°Ð½Ñ Ð¿Ð¾Ð¼Ð¾ÑÑ Ð²Ð°Ð¼ в ÑоÑÑавлении оÑÑÑÑа об оÑибке, коÑоÑÑй можно бÑÐ´ÐµÑ Ð¾Ð±ÑабоÑаÑÑ ÑÑÑекÑивно. ÐÑ Ð½Ðµ ÑÑебÑем Ð¸Ñ Ð½ÐµÑкоÑниÑелÑного вÑполнениÑ, но вÑÑ Ð¶Ðµ лÑÑÑе ÑледоваÑÑ Ð¸Ð¼ Ð´Ð»Ñ Ð¾Ð±Ñего блага.
5.1. ÐиагноÑÑика оÑибок #
ÐÑежде Ñем ÑообÑаÑÑ Ð¾Ð± оÑибке, пожалÑйÑÑа, пÑоÑиÑайÑе и пеÑеÑиÑайÑе докÑменÑаÑÐ¸Ñ Ð¸ ÑбедиÑеÑÑ, ÑÑо вообÑе возможно ÑделаÑÑ Ñо, ÑÑо Ð²Ñ Ñ Ð¾ÑиÑе. ÐÑли из докÑменÑаÑии неÑÑно, можно ÑÑо ÑделаÑÑ Ð¸Ð»Ð¸ неÑ, пожалÑйÑÑа, ÑообÑиÑе и об ÑÑом (Ñогда ÑÑо оÑибка в докÑменÑаÑии). ÐÑли вÑÑÑнÑеÑÑÑ, ÑÑо пÑогÑамма Ð´ÐµÐ»Ð°ÐµÑ ÑÑо-Ñо не Ñак, как напиÑано в докÑменÑаÑии, ÑÑо Ñоже оÑибка. ÐÐ¾Ñ Ð»Ð¸ÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе пÑимеÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½ÑÑ Ð¾Ñибок:
ÐÑогÑамма завеÑÑаеÑÑÑ Ñ Ð°Ð²Ð°ÑийнÑм Ñигналом или ÑообÑением об оÑибке опеÑаÑионной ÑиÑÑемÑ, ÑказÑваÑÑей на пÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ð² пÑогÑамме. (РкаÑеÑÑве конÑÑпÑимеÑа можно пÑивеÑÑи ÑообÑение «ÐÐµÑ Ð¼ÐµÑÑа на диÑке» â ÑÑÑ Ð¿ÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑеÑиÑÑ Ñами.)
ÐÑогÑамма вÑдаÑÑ Ð½ÐµÐ¿ÑавилÑнÑй ÑезÑлÑÑÐ°Ñ Ð´Ð»Ñ Ð»ÑбÑÑ Ð²Ð²Ð¾Ð´Ð¸Ð¼ÑÑ Ð´Ð°Ð½Ð½ÑÑ .
ÐÑогÑамма оÑказÑваеÑÑÑ Ð¿ÑинимаÑÑ Ð´Ð¾Ð¿ÑÑÑимÑе (ÑоглаÑно докÑменÑаÑии) даннÑе.
ÐÑогÑамма пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð½ÐµÐ´Ð¾Ð¿ÑÑÑимÑе даннÑе без ÑообÑÐµÐ½Ð¸Ñ Ð¾Ð± оÑибке или пÑедÑпÑеждениÑ. Ðо помниÑе: Ñо, ÑÑо Ð²Ñ ÑÑиÑаеÑе недопÑÑÑимÑм, Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ ÑÑиÑаÑÑ Ð¿ÑиемлемÑм ÑаÑÑиÑением или ÑовмеÑÑимÑм Ñ Ð¿ÑинÑÑой пÑакÑикой.
Ðе ÑдаÑÑÑÑ ÑÑÑановиÑÑ Postgres Pro на поддеÑживаемой плаÑÑоÑме, вÑполнÑÑ ÑооÑвеÑÑÑвÑÑÑие инÑÑÑÑкÑии.
ÐдеÑÑ Ð¿Ð¾Ð´ «пÑогÑаммой» подÑазÑмеваеÑÑÑ Ð¿ÑоизволÑнÑй иÑполнÑемÑй Ñайл, а не иÑклÑÑиÑелÑно ÑеÑвеÑнÑй пÑоÑеÑÑ.
ÐÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ ÑабоÑа или вÑÑÐ¾ÐºÐ°Ñ Ð·Ð°Ð³ÑÑзка ÑеÑÑÑÑов â ÑÑо не обÑзаÑелÑно оÑибка. Также Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ бÑÑÑ Ð¾Ñибкой какое-Ñо неÑооÑвеÑÑÑвие ÑÑандаÑÑÑ SQL, еÑли ÑолÑко Ñвно не деклаÑиÑÑеÑÑÑ ÑооÑвеÑÑÑвие в данном аÑпекÑе.
5.2. ЧÑо ÑообÑаÑÑ #
СообÑÐ°Ñ Ð¾ пÑоблеме, поÑÑаÑайÑеÑÑ Ð¸Ð·Ð»Ð¾Ð¶Ð¸ÑÑ Ð²Ñе ÑакÑÑ. Ркаждом оÑÑÑÑе об оÑибке ÑледÑÐµÑ ÑказаÑÑ:
ТоÑнÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ Ð´ÐµÐ¹ÑÑвий Ð´Ð»Ñ Ð²Ð¾ÑпÑÐ¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿ÑоблемÑ, наÑÐ¸Ð½Ð°Ñ Ñ Ð·Ð°Ð¿ÑÑка пÑогÑаммÑ. Ðна должна бÑÑÑ ÑамодоÑÑаÑоÑной; еÑли вÑвод завиÑÐ¸Ñ Ð¾Ñ Ð´Ð°Ð½Ð½ÑÑ Ð² ÑаблиÑÐ°Ñ , Ñо недоÑÑаÑоÑно ÑообÑиÑÑ Ð¾Ð´Ð¸Ð½ лиÑÑ
SELECT, без пÑедÑеÑÑвÑÑÑÐ¸Ñ Ð¾Ð¿ÐµÑаÑоÑовCREATE TABLEиINSERT.ÐÑÑÑий ÑоÑÐ¼Ð°Ñ ÑеÑÑа Ð´Ð»Ñ Ð¿Ñоблем Ñ SQL â Ñайл, коÑоÑÑй можно пеÑедаÑÑ Ð¿ÑогÑамме psql и ÑвидеÑÑ Ð¿ÑоблемÑ. (Ð ÑбедиÑеÑÑ, ÑÑо в ваÑем Ñайле
~/.psqlrcниÑего неÑ.) СамÑй пÑоÑÑой ÑпоÑоб полÑÑиÑÑ Ñакой Ñайл â вÑгÑÑзиÑÑ Ð¾Ð±ÑÑÐ²Ð»ÐµÐ½Ð¸Ñ ÑÐ°Ð±Ð»Ð¸Ñ Ð¸ даннÑе, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñе Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»Ð¸Ð³Ð¾Ð½Ð°, Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ pg_dump, а заÑем добавиÑÑ Ð¿ÑоблемнÑй запÑоÑ. ÐоÑÑаÑайÑеÑÑ ÑокÑаÑиÑÑ ÑÐ°Ð·Ð¼ÐµÑ Ð²Ð°Ñего ÑеÑÑового пÑимеÑа, Ñ Ð¾ÑÑ ÑÑо не абÑолÑÑно Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾. ÐÑли оÑибка воÑпÑоизводиÑÑÑ, Ð¼Ñ Ð½Ð°Ð¹Ð´Ñм ÐµÑ Ð² лÑбом ÑлÑÑае.ÐÑли ваÑе пÑиложение иÑполÑзÑÐµÑ ÐºÐ°ÐºÐ¾Ð¹-Ñо дÑÑгой клиенÑÑкий инÑеÑÑейÑ, напÑÐ¸Ð¼ÐµÑ PHP, пожалÑйÑÑа, попÑÑайÑеÑÑ ÑвеÑÑи оÑÐ¸Ð±ÐºÑ Ðº пÑоблемнÑм запÑоÑам.
РезÑлÑÑаÑ, коÑоÑÑй Ð²Ñ Ð¿Ð¾Ð»ÑÑаеÑе. ÐÑли еÑÑÑ ÑообÑение об оÑибке, покажиÑе его. ÐÑли пÑогÑамма завеÑÑаеÑÑÑ Ð¾Ñибкой опеÑаÑионной ÑиÑÑемÑ, ÑообÑиÑе о ней. Ðли еÑли ниÑего не пÑоиÑÑ Ð¾Ð´Ð¸Ñ, оÑÑазиÑе ÑÑо. Ðаже еÑли в ÑезÑлÑÑаÑе ваÑего ÑеÑÑа пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ñбой пÑогÑÐ°Ð¼Ð¼Ñ Ð¸Ð»Ð¸ ÑÑо-Ñо оÑевидное, Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ не наблÑдаÑÑ ÑÑого Ñ ÑебÑ. ÐÑоÑе вÑего бÑÐ´ÐµÑ ÑкопиÑоваÑÑ ÑекÑÑ Ñ ÑеÑминала, еÑли ÑÑо возможно.
ÐÑимеÑание
ÐÑли Ð²Ñ ÑпоминаеÑе ÑообÑение об оÑибке, пожалÑйÑÑа, ÑкажиÑе его в наиболее полной ÑоÑме. ÐапÑимеÑ, в psql, Ð´Ð»Ñ ÑÑого ÑнаÑала вÑполниÑе
\set VERBOSITY verbose. ÐÑли Ð²Ñ ÑиÑиÑÑеÑе ÑообÑÐµÐ½Ð¸Ñ Ð¸Ð· жÑÑнала ÑобÑÑий ÑеÑвеÑа, пÑиÑвойÑе паÑамеÑÑÑ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ log_error_verbosity знаÑениеverbose, ÑÑÐ¾Ð±Ñ Ð¶ÑÑнал бÑл наиболее подÑобнÑм.ÐÑимеÑание
Ð ÑлÑÑае кÑиÑиÑеÑÐºÐ¸Ñ Ð¾Ñибок ÑообÑение на ÑÑоÑоне клиенÑа Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ ÑодеÑжаÑÑ Ð²ÑÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼ÑÑ Ð¸Ð½ÑоÑмаÑиÑ. ÐожалÑйÑÑа, Ñакже изÑÑиÑе жÑÑнал ÑеÑвеÑа баз даннÑÑ .
ÐÑÐµÐ½Ñ Ð²Ð°Ð¶Ð½Ð¾ оÑмеÑиÑÑ, какой ÑезÑлÑÑÐ°Ñ Ð²Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð¸ полÑÑиÑÑ. ÐожалÑйÑÑа, пÑиводиÑе ожидаемÑй ÑезÑлÑÑаÑ, еÑли ÑÑо ÑмеÑÑно.
ÐÑе паÑамеÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¹ ÑÑÑоки и дÑÑгие паÑамеÑÑÑ Ð·Ð°Ð¿ÑÑка, вклÑÑÐ°Ñ Ð²Ñе ÑвÑзаннÑе пеÑеменнÑе окÑÑÐ¶ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ ÑÐ°Ð¹Ð»Ñ ÐºÐ¾Ð½ÑигÑÑаÑии, коÑоÑÑе Ð²Ñ Ð¸Ð·Ð¼ÐµÐ½Ñли.
ÐÑÑ, ÑÑо Ð²Ñ Ð´ÐµÐ»Ð°Ð»Ð¸ не Ñак, как напиÑано в инÑÑÑÑкÑиÑÑ Ð¿Ð¾ ÑÑÑановке.
ÐеÑÑÐ¸Ñ Postgres Pro. ЧÑÐ¾Ð±Ñ Ð²ÑÑÑниÑÑ Ð²ÐµÑÑÐ¸Ñ ÑеÑвеÑа, к коÑоÑÐ¾Ð¼Ñ Ð²Ñ Ð¿Ð¾Ð´ÐºÐ»ÑÑенÑ, можно вÑполниÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ
SELECT pgpro_version();. ÐолÑÑинÑÑво иÑполнÑемÑÑ Ð¿ÑогÑамм Ñакже поддеÑживаÑÑ Ð¿Ð°ÑамеÑÑ--version; как минимÑм должно ÑабоÑаÑÑpostgres --versionиpsql --version.Ð¡Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ плаÑÑоÑме, вклÑÑÐ°Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ и веÑÑÐ¸Ñ ÑдÑа, библиоÑеки C, Ñ Ð°ÑакÑеÑиÑÑики пÑоÑеÑÑоÑа, памÑÑи и Ñ. д.
5.3. ÐÑда ÑообÑаÑÑ #
РобÑем ÑлÑÑае поÑÑлаÑÑ ÑообÑÐµÐ½Ð¸Ñ Ð¾Ð± оÑибкаÑ
ÑледÑÐµÑ Ð¿Ð¾ адÑеÑÑ <bugs@postgrespro.ru>. ÐÑ Ð¿ÑоÑим Ð²Ð°Ñ Ð½Ð°Ð¿Ð¸ÑаÑÑ Ð¸Ð½ÑоÑмаÑивнÑÑ ÑÐµÐ¼Ñ Ð¿Ð¸ÑÑма, возможно вклÑÑив в Ð½ÐµÑ ÑаÑÑÑ ÑообÑÐµÐ½Ð¸Ñ Ð¾Ð± оÑибке.
Ðе оÑпÑавлÑйÑе оÑÑÑÑÑ Ð¾Ð± оÑибкаÑ
, ÑпеÑиÑиÑнÑÑ
Ð´Ð»Ñ Postgres Pro, на адÑÐµÑ Ð¿Ð¾Ð´Ð´ÐµÑжки PostgreSQL, Ñак как Postgres Pro не поддеÑживаеÑÑÑ ÑообÑеÑÑвом PostgreSQL. Ðднако Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑообÑаÑÑ Ð¿Ð¾ адÑеÑÑ <pgsql-bugs@lists.postgresql.org> обо вÑеÑ
оÑибкаÑ
, ÑвÑзаннÑÑ
Ñ PostgreSQL.
Ðаже еÑли ваÑа оÑибка не ÑвÑзана Ñ Ð¾ÑобенноÑÑÑми Postgres Pro, не поÑÑлайÑе ÑообÑÐµÐ½Ð¸Ñ Ð² ÑпиÑки ÑаÑÑÑлки Ð´Ð»Ñ Ð¿Ð¾Ð»ÑзоваÑелей, напÑÐ¸Ð¼ÐµÑ Ð² <pgsql-sql@lists.postgresql.org> или <pgsql-general@lists.postgresql.org>. ÐÑи ÑаÑÑÑлки пÑедназнаÑÐµÐ½Ñ Ð´Ð»Ñ Ð¾ÑвеÑов на вопÑоÑÑ Ð¿Ð¾Ð»ÑзоваÑелей, и иÑ
подпиÑÑики обÑÑно не Ñ
оÑÑÑ Ð¿Ð¾Ð»ÑÑаÑÑ ÑообÑÐµÐ½Ð¸Ñ Ð¾Ð± оÑибкаÑ
, более Ñого, они вÑÑд ли иÑпÑавÑÑ Ð¸Ñ
.
Также, пожалÑйÑÑа, не оÑпÑавлÑйÑе оÑÑÑÑÑ Ð¾Ð± оÑибкаÑ
в ÑпиÑок <pgsql-hackers@lists.postgresql.org>. ÐÑÐ¾Ñ ÑпиÑок пÑедназнаÑен Ð´Ð»Ñ Ð¾Ð±ÑÑÐ¶Ð´ÐµÐ½Ð¸Ñ ÑазÑабоÑки PostgreSQL, и бÑÐ´ÐµÑ Ð»ÑÑÑе, еÑли ÑообÑÐµÐ½Ð¸Ñ Ð¾Ð± оÑибкаÑ
бÑдÑÑ ÑÑÑеÑÑвоваÑÑ Ð¾ÑделÑно. ÐÑ Ð¿ÐµÑенеÑÑм обÑÑждение ваÑей оÑибки в pgsql-hackers, еÑли ÑвÑÐ·Ð°Ð½Ð½Ð°Ñ Ñ PostgreSQL пÑоблема поÑÑебÑÐµÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑного ÑаÑÑмоÑÑениÑ.