Выдача ошибок в драйвере PostgreSQL
Добавлено: Чт 15 дек 2016 16:48
Работаю в PostgreSQL 9.4 (база в кодировке UNICODE) на Delphi 7. Вопроса 2.
1. При возникновении ошибок драйвер выдает только первую строку от сообщение от сервера:
SQL Server error: operator does not exist: integer = character varying
однако SQL Manager for PostgreSQL выдает более понятную диагностику
SQL Server error: operator does not exist: integer = character varying
LINE 1: select INV_PORT FROM data.D_B_TDBS where DOC=varchar '124669...
^
Можно не обрезать сообщение от сервера?
2. При выдачи на сервере исключения на русском языке, например:
RAISE EXCEPTION '%', 'Попытка продублировать код ISO'
Драйвер выдает абракадабру
SQL Server error: 'Ïîïûòêà ïðîäóáëèðîâàòü êîä ISO'
SQL Manager for PostgreSQL выдает правильно:
SQL Server error: Попытка продублировать код ISO
Если на сервере исключение выдать с перекодировкой
RAISE EXCEPTION '%', convert_from(Message::bytea, 'WIN1251')
то тогда все наоборот, драйвер выдает правильно, а SQL Manager for PostgreSQL - нет.
Как настроить драйвер на выдачу сообщений в правильной кодировке?
1. При возникновении ошибок драйвер выдает только первую строку от сообщение от сервера:
SQL Server error: operator does not exist: integer = character varying
однако SQL Manager for PostgreSQL выдает более понятную диагностику
SQL Server error: operator does not exist: integer = character varying
LINE 1: select INV_PORT FROM data.D_B_TDBS where DOC=varchar '124669...
^
Можно не обрезать сообщение от сервера?
2. При выдачи на сервере исключения на русском языке, например:
RAISE EXCEPTION '%', 'Попытка продублировать код ISO'
Драйвер выдает абракадабру
SQL Server error: 'Ïîïûòêà ïðîäóáëèðîâàòü êîä ISO'
SQL Manager for PostgreSQL выдает правильно:
SQL Server error: Попытка продублировать код ISO
Если на сервере исключение выдать с перекодировкой
RAISE EXCEPTION '%', convert_from(Message::bytea, 'WIN1251')
то тогда все наоборот, драйвер выдает правильно, а SQL Manager for PostgreSQL - нет.
Как настроить драйвер на выдачу сообщений в правильной кодировке?