пятница, 7 декабря 2007 г.

Кодировка подключения и DDL в FB 2.1

> Кстати ты в курсе что в последних файрах если ты подключился в
> NONE то DDL операторы выполнять противопоказано? По крайней мере некоторые

Почему:
выполняем в NONE:

create procedure AAA
as
begin
-- тут был вася
end

В каком чарсете запишется вася в RDB$PROCEDURE_SOURCE? Правильно, в
WIN1251. А должен быть в юникоде. И если теперь подключиться в cp1251,
то получишь ошибку транслитерации.

--
Дмитрий Еманов

3 комментария:

Анонимный комментирует...

А если при подключении указана cp1251 и делаются изменения метаданных, в какой кодировке сохранится процедура?

pnv82 комментирует...

В 2.1 все должно сохраниться в юникоде. Раньше, насколько я понял, сохранялось как раз в 1251, что и привело к текущим проблемам и даже расширение функционала gbak в 2.5 :)

Анонимный комментирует...

У меня проблемка интересная. Перенес базу с firebird 1.0 на 2.1 бакапом/рестором. Когда подключаюсь ibexpert с charset - cp1251 вываливается такая ошибка.
select RDB$RELATION_NAME, RDB$SYSTEM_FLAG, RDB$OWNER_NAME,
RDB$RELATION_TYPE,
RDB$DESCRIPTION
from RDB$RELATIONS where (RDB$VIEW_BLR is NULL)
order by RDB$RELATION_NAME

Cannot transliterate character between character sets.
Cannot transliterate character between character sets.


Может это изза того что программистки писали дескрипшн на русском в предыдущей версии. Как можно это пофиксить?
Пробовал подключится с charset - unicode_ffs и с делать update rdb$relations r set r.rdb$description=r.rdb$description. Не помогло.