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

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
vanek_t
Сообщения: 13
Зарегистрирован: 04 июл 2006, 13:54

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

Сообщение vanek_t » 04 июл 2006, 14:17

Проблема.
У некоторых пользователей в базе не работает 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-клиенты без групп' заменить на любую строку, не содержащую русских символов, то ошибки не возникает.

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

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 04 июл 2006, 14:24

Читал http://forum.ibase.ru/phpBB2/viewtopic.php?t=2389?
Укажи версию сервера.

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 04 июл 2006, 14:25

"некоторым пользователям" надо научиться чарсет коннекта указывать

vanek_t
Сообщения: 13
Зарегистрирован: 04 июл 2006, 13:54

Сообщение vanek_t » 04 июл 2006, 14:25

Firebird версии 1.0

vanek_t
Сообщения: 13
Зарегистрирован: 04 июл 2006, 13:54

Сообщение vanek_t » 04 июл 2006, 14:27

А если Charset У базы по умолчанию задан. Т.е. при соединении Charset win1251 в настройках соединения стоит!!!

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 04 июл 2006, 14:30

Чарсет базы это одно, а чарсет коннекта - другое.

vanek_t
Сообщения: 13
Зарегистрирован: 04 июл 2006, 13:54

Сообщение vanek_t » 04 июл 2006, 14:44

А почему тогда при таких же условиях коннекта у 80 пользователей все работает, а у 7-ми нет????

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 04 июл 2006, 14:47

Попробуй вывести закономерности. Выводы сообщи :).

vanek_t
Сообщения: 13
Зарегистрирован: 04 июл 2006, 13:54

Сообщение vanek_t » 04 июл 2006, 14:53

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

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 04 июл 2006, 14:58

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

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 04 июл 2006, 15:05

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

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

vanek_t
Сообщения: 13
Зарегистрирован: 04 июл 2006, 13:54

Сообщение vanek_t » 04 июл 2006, 15:16

Да, прикол появляется только под определенными пользователями. Тоже самое и в 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 ....
И всеравно выдает ошибку.

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

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 04 июл 2006, 15:20

А если такой же Script Executive но под SYSDBA то работает?

vanek_t
Сообщения: 13
Зарегистрирован: 04 июл 2006, 13:54

Сообщение vanek_t » 04 июл 2006, 15:21

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

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

vanek_t
Сообщения: 13
Зарегистрирован: 04 июл 2006, 13:54

Сообщение vanek_t » 04 июл 2006, 15:24

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

vanek_t
Сообщения: 13
Зарегистрирован: 04 июл 2006, 13:54

Сообщение vanek_t » 05 июл 2006, 12:37

Хм. Поставил Firebird 2.0, перекинул базу под новую версию и пользователей, проблема отпала. Все работает.

Ответить