|
|
|
Обработка ошибок
|
|||
|---|---|---|---|
|
#18+
Добрый день. Стоит задача перехватывать ошибки операций DML и их далее обрабатывать. Вопрос: есть ли возможность с помощью каких-либо настроек формализовать текст сообщения об ошибке. Например При выполнении операции DELETE FROM table1 WHERE id=2 . Получаем ошибку ОШИБКА: UPDATE или DELETE в таблице "table1" нарушает ограничение внешнего ключа "table2_fk1" таблицы "table2" DETAIL: На ключ (id)=(2) всё ещё есть ссылки в таблице "table2". Требуется получить имя сущности, вызывающей эту ошибку, в данном случае это - ограничение внешнего ключа. Парсить текст крайне не надежно. Обрабатывать код ошибки - не информативно. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 10:30:18 |
|
||
|
Обработка ошибок
|
|||
|---|---|---|---|
|
#18+
big-trot, мы ловим ошибку в эксепшене plsql и делаем raise с текстом, который уже можно парсить. (короче - подписался на каменты) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 12:05:55 |
|
||
|
Обработка ошибок
|
|||
|---|---|---|---|
|
#18+
второй вариант - сделали функцию show_error(код, "текст") и вызываем её так: Код: sql 1. 2. но вообще, такого рода ошибка как у вас пользователям не пригодна совершенно, так что, похоже, должен быть какой-то "средний слой", в котором можно уже логгировать это так, как оно вам отдаётся постгресом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 12:09:51 |
|
||
|
Обработка ошибок
|
|||
|---|---|---|---|
|
#18+
Weedно вообще, такого рода ошибка как у вас пользователям не пригодна совершенно, так что, похоже, должен быть какой-то "средний слой", в котором можно уже логгировать это так, как оно вам отдаётся постгресом. Вот если бы ошибка была типа: "вы пытаетесь ввести в поле n число меньше 1000, что недопустимо" тогда наш вариант с функцией, подставляемой в произвольный запрос с проверкой (а так же в триггеры или rules) и возвращающей ошибку был бы удобен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 12:20:58 |
|
||
|
Обработка ошибок
|
|||
|---|---|---|---|
|
#18+
big-trot, 40.6.6.1. Obtaining information about an error RETURNED_SQLSTATE - Table A-1. PostgreSQL Error Codes CONSTRAINT_NAME Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 12:53:35 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38801839&tid=1998363]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 373ms |

| 0 / 0 |
