PostgreSql hibaüzenetei
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:
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:
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.
■ 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 ...
"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.
Lehet én nem értem pontosan,
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