Страница 1 из 1

У user'oв не работает select: cast('вася' as Varchar(10))

Добавлено: 04 июл 2006, 14:17
vanek_t
Проблема.
У некоторых пользователей в базе не работает select вида:

select CR.ID_GROUP GROUP_ID, cast('VIP-клиенты без групп' as VARCHAR(40))
from CRANKS CR
left join CLIENTS CL on CR.CLIENT_CODE = Cl.CLIENT_CODE
left join CRANKS_REPORTS CRP on CRP.ID_GROUP = CR.ID_GROUP

Под SYSDBA это все прекрасно срабатывает, а под некоторыми пользователями пишет ошибку "ariphmetic exseption, string truncation" и бла, бла, бла. При этом если строку - 'VIP-клиенты без групп' заменить на любую строку, не содержащую русских символов, то ошибки не возникает.

Может кто знает, как это лечится?

Добавлено: 04 июл 2006, 14:24
CyberMax
Читал http://forum.ibase.ru/phpBB2/viewtopic.php?t=2389?
Укажи версию сервера.

Добавлено: 04 июл 2006, 14:25
dimitr
"некоторым пользователям" надо научиться чарсет коннекта указывать

Добавлено: 04 июл 2006, 14:25
vanek_t
Firebird версии 1.0

Добавлено: 04 июл 2006, 14:27
vanek_t
А если Charset У базы по умолчанию задан. Т.е. при соединении Charset win1251 в настройках соединения стоит!!!

Добавлено: 04 июл 2006, 14:30
CyberMax
Чарсет базы это одно, а чарсет коннекта - другое.

Добавлено: 04 июл 2006, 14:44
vanek_t
А почему тогда при таких же условиях коннекта у 80 пользователей все работает, а у 7-ми нет????

Добавлено: 04 июл 2006, 14:47
CyberMax
Попробуй вывести закономерности. Выводы сообщи :).

Добавлено: 04 июл 2006, 14:53
vanek_t
Вот в том то и прикол, что не нашел я никаких закономерностей. Поэтому и спрашиваю, может кто сталкивался с подобным. Ведь условия коннекта для всех пользователей из клиентской программы одинаковы!

Добавлено: 04 июл 2006, 14:58
CyberMax
1. При авторизации под одним и тем же пользователем (например, BAD_USER) это исключение появляется ВСЕГДА?.
2. При выполнении запроса в IB Expert под BAD_USER это исключение тоже появляется?

Добавлено: 04 июл 2006, 15:05
kdv
Ведь условия коннекта для всех пользователей из клиентской программы одинаковы!
как правило, в таких случаях оказывается, что нифига не одинаковы. И человек будет с пеной у рта доказывать что "одинаковые", пока не наткнется на свою ошибку.

причины этой ошибки как правило такие, что в некоторый момент какие то данные занесли БЕЗ кодировки, или с другой кодировкой, или что-нибудь в этом роде. Т.е. разработчик суетился, и...

Добавлено: 04 июл 2006, 15:16
vanek_t
Да, прикол появляется только под определенными пользователями. Тоже самое и в IBExpert'e.

В IBxpert'e делаю скрипт executive такого вида:

Код: Выделить всё

SET NAMES WIN1251;

CONNECT '192.168.3.100:merch_ibx.gdb' USER 'INGA' PASSWORD '1111';

select cast('Vip - клиенты' as varchar(40)) from ....
И всеравно выдает ошибку.

[отформатировано модератором]

Добавлено: 04 июл 2006, 15:20
WildSery
А если такой же Script Executive но под SYSDBA то работает?

Добавлено: 04 июл 2006, 15:21
vanek_t
kdv писал(а):
Ведь условия коннекта для всех пользователей из клиентской программы одинаковы!
как правило, в таких случаях оказывается, что нифига не одинаковы. И человек будет с пеной у рта доказывать что "одинаковые", пока не наткнется на свою ошибку.

причины этой ошибки как правило такие, что в некоторый момент какие то данные занесли БЕЗ кодировки, или с другой кодировкой, или что-нибудь в этом роде. Т.е. разработчик суетился, и...
Когда я говорю одинаковы - я имею в виду - что в компонентах IBX прописаны настройки соединения, а пользователю нужно ввести тока username и login. Динамически кроме этих параметров ничего не меняется! При этом под одним username запрос работает, а под другим нет! А с пеной я ничего доказывать не буду - я предоставил факты! Могу тебе предоставить шанс с пеной изо рта мне доказать, что для разных username настройки соединения будут разные в этом случае!!!

Добавлено: 04 июл 2006, 15:24
vanek_t
WildSery писал(а):А если такой же Script Executive но под SYSDBA то работает?
Да. Под SYSDBA все срабатывает!

Добавлено: 05 июл 2006, 12:37
vanek_t
Хм. Поставил Firebird 2.0, перекинул базу под новую версию и пользователей, проблема отпала. Все работает.