ibrusfaq - что делаю не так?

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

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

Ответить
entryway
Сообщения: 71
Зарегистрирован: 13 апр 2006, 18:06

ibrusfaq - что делаю не так?

Сообщение entryway » 14 июн 2006, 17:28

понадобился мне upper
прочитал фак, законектился экспертом под сисдба, открыл RDB$RELATION_FIELDS по условию:

(RDB$FIELD_NAME NOT CONTAINING '$') AND (RDB$SYSTEM_FLAG = 0) AND (RDB$COLLATION_ID = 0)

меняю нолик на единицу в первой строчке, комичу и получаю

Cannot commit transaction:
This operation is not defined for system tables.
unsuccessful metadata update.
OPERATORS.

OPERATORS - это такая таблица, там тоже есть варчары и поля из неё первые в этом списке.

не могу поменть нигде никак. всегда получаю это сообщение.

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

Сообщение kdv » 14 июн 2006, 17:36

1. ковырять системные таблицы нехорошо
2. upper работает и так в FB 1.5
3. upper можно написать самому или взять с сайта

entryway
Сообщения: 71
Зарегистрирован: 13 апр 2006, 18:06

Сообщение entryway » 14 июн 2006, 18:08

kdv писал(а):1. ковырять системные таблицы нехорошо
хорошо-нехорошо это дело последнее. в факе написано, что должно работать, а оно не хочет...
2. upper работает и так в FB 1.5
у меня - не работает
если конекчусь без чарсета
select upper(s.answer) from infosms - выдает ловеркейсные строки
s.answer - домен на варчар 1024

upper(s.answer COLLATE WIN1251) выдает
Data type unknown. COLLATION WIN1251 is not valid for specified CHARACTER SET.

если конекчусь с чарсетом 1251, простой селект или селект с аппером выдает "арифметик оверфлов ор дивижон бай зеро мать, мать, мать...", с COLLATE - тоже самое, что и в первом случае.
3. upper можно написать самому или взять с сайта
так не хочется ничего писать или брать с сайта если оно уже есть и по идее должно работать.

так же не работает
update infosms s set s.question = s.question
после ручной смены чарсета и колата на 1251 и 1251_ua
все тот же "арифметик оверфлов..."

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

Сообщение dimitr » 14 июн 2006, 18:34

entryway писал(а):upper(s.answer COLLATE WIN1251) выдает
Data type unknown. COLLATION WIN1251 is not valid for specified CHARACTER SET
вот тут и мне стало интересно - какому же чарсету ты коллейт пытаешься в системных таблицах привить?

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 14 июн 2006, 18:38

НОНу, вестимо...

entryway
Сообщения: 71
Зарегистрирован: 13 апр 2006, 18:06

Сообщение entryway » 14 июн 2006, 18:50

признаюсь, мозг я даже не пробовал поключать.
открыл фак и пытался делать по-пунктно - не получилось.

да, нону. до сего момента я вообще никак не думал и ничего не делал с этими чарсетами и коллейтами (не нужно было) - все по умолчанию. а сегодня решил в одной таблице проапперкейсить пару полей (ну и заодно везде перепрописать 1251) и с наскоку по факу не удалось. вот и отписал. я не настаиваю на правке системных таблиц, не подумайте - не получилось просто никак. подозреваю что прокатит метод создания нового поля сразу с заданным чарсетом и переливания данных в него с последующим убиением и переименованием, но это уже завтра.

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

Сообщение kdv » 14 июн 2006, 19:44

открыл фак и пытался делать по-пунктно - не получилось.
я не утверждаю, что он идеален, но:
1. написано как создать БД с чарсетом WIN1251
2. написано как указывать чарсет БД при коннекте из разных софтин и компонент

ВСЕ!!!! Делать больше с чарсетами ничего не нужно.

я посоветую еще раз прочитать ibfusfaq.htm , вдумчиво. насчет none там есть всего два абзаца, которые совершенно однозначны и продолжения не имеют.
Они прямо перед текстом
"Вся остальная часть этого документа относится только к официальному способу работы с русскими буквами в IB"
p.s. под "официальным" имеется в виду создание БД в 1251.
p.p.s. у тебя есть только два варианта -
1. остаться на none
2. создать БД заново из скрипта уже в 1251 и перегнать в нее данные.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 14 июн 2006, 20:41

kdv писал(а): p.p.s. у тебя есть только два варианта -
1. остаться на none
2. создать БД заново из скрипта уже в 1251 и перегнать в нее данные.
Да що ви такое говорити (C) Всё ж очинно просто - хакнуть пару байтиков в системных таблицах, и ваще однобайтовый чарсет в трёхбайтовый превратится волшебным образом :-D А то на всяких отстойных форумах думать велят :-D

entryway
Сообщения: 71
Зарегистрирован: 13 апр 2006, 18:06

Сообщение entryway » 14 июн 2006, 22:33

ваше завуалированное хамство остается хамством
не стесняетесь, говорите прямо: "пошел вон придурок"
почувствуйте себя киркоровым
про хакнуть - не я придумал
по сабжу - можно больше не "советовать"
спасибо

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

Сообщение kdv » 15 июн 2006, 00:13

ваше завуалированное хамство остается хамством
отсутствует здоровое чувство юмора?

Ответить