ugrás a tartalomhoz

PostgreSql hibaüzenetei

lorko · 2011. Nov. 8. (K), 14.44
Nem szeretném, hogy az adatbázis-kezelő (PostgreSql) hibaüzenetei
a felhasználó elé kerüljenek, erre keresek szép megoldást.
(A nyelv Perl, de ez nem nyelv-specifikus probléma, úgy gondolom.)

Tárolt eljárásokban a saját üzeneteket egyszerűen lekezeljük:

RAISE EXCEPTION 'sql_failure: fuggveny_neve_001';

Itt a kettőspont után álló kód alapján a program az adott nyelvnek
megfelelő értelmes üzenetet megjeleníti a felületen.

Más a helyzet a Postgres saját üzeneteivel.
Mondjuk egyedi kulcs esetén az alábbi üzenet érkezik:

ERROR: duplicate key value violates unique constraint
"some_name_id_key" CONTEXT: SQL ...

Ezt persze lehet egyedileg vizsgálni (pl.: regexp), de szeretnék
kicsit általánosabb hibakezelést megvalósítani adatbázis szinten,
nem minden hibaüzenetet egyedileg vizsgálni.

Ráadásul az üzenet a PostgreSql különböző verzióiban eltérhet.

Röviden:
Tud valaki szép megoldást a PostgreSql hibaüzeneteinek lekezelésére?
Ti hogyan csináljátok?
Hozzászólásaitokat előre is köszönöm.
 
1

Lehet én nem értem pontosan,

bb0072 · 2011. Nov. 9. (Sze), 11.14
Lehet én nem értem pontosan, de:
1) A hibaüzeneteket nem fordítjuk le a kliens nyelvére, hanem elmaszkoljuk (mondjuk: Hiba történt a rendszerben, bocsi!) és közben logoljuk a hibát.
2) Mindezt nem az adatbázis szintjén tesszük (nem is csak ott lehetnek hibák), hanem az alkalmazás szintjén. Try - catch - throw stb. Perlben például: http://www.perl.com/pub/2002/11/14/exception.html