Getting error codes for failed queries?

Поиск
Список
Период
Сортировка
От Alejandro Forero Cuervo
Тема Getting error codes for failed queries?
Дата
Msg-id 20031015165507.GA541@bachue.com
обсуждение исходный текст
Ответы Re: Getting error codes for failed queries?
Список pgsql-general
Hello.

I'm  new to  PostgreSQL and  I'm using  it for  some project.   I
am  currently  creating an  entity  engine  that provides  a  web
interface, which is  oriented towards end users,  to the database
based on some  enriched description of the tables  (from which it
also generates the SQL code to create them).

My application  connects to  the database using  the socket-level
frontend/backend protocol rather than providing a wrapper around
the libpq library.

When an error takes places executing a query, all I get is string
describing the error, such as ``ERROR:  Cannot insert a duplicate
key  into unique  index locations_name_key''.   However, I  can't
pass  this error  description back  to the  end-users: I have  to
translate it  into something  meaningful for them  (for instance,
something that refers to the fields they are seeing in their HTML
forms and something in the language they selected).

Currently, when  an error  takes place,  I send  multiple queries
back to the database trying to  detect what could be the cause(s)
of the error.  This seems wrong as  I can't know in advance, in a
maintainable way, all the possible causes for errors.  It is also
slow as multiple  (ideally redundant) queries have to  be sent to
the database.

I could also  parse the error string and try  to detect what went
wrong based  on it, but  I'd rather  stay away from  that option,
which  doesn't look  very  maintainable.  Or  should  I do  that?
Do  those  strings get  translated  to  different languages,  for
instance?

What would experienced PostgreSQL users suggest I do?

Alejo.
http://bachue.com/alejo

--
The mere formulation of a problem is far more essential than its solution.
      -- Albert Einstein.

$0='!/sfldbi!yjoV0msfQ!sfiupob!utvK'x44;print map{("\e[7m \e[0m",chr ord
(chop$0)-1)[$_].("\n")[++$i%77]}split//,unpack'B*',pack'H*',($F='F'x19).
"F0F3E0607879CC1E0F0F339F3FF399C666733333CCF87F99E6133999999E67CFFCCF3".
"219CC1CCC033E7E660198CCE4E66798303873CCE60F3387$F"#Don't you love Perl?

Вложения

В списке pgsql-general по дате отправления:

Предыдущее
От: Dennis Gearon
Дата:
Сообщение: Re: SET within a function?
Следующее
От: Tom Lane
Дата:
Сообщение: Re: VACUUM degrades performance significantly. Database becomes unusable!