Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » InterBase и FireBird: вопросы по работе и их решение

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104

Открыть новую тему     Написать ответ в эту тему

miwa

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
golkanavt
В таком случае +1 к отстутствию нужной библиотеки или ее зависимостей. Для линукса - комманда ldd <filename> покажет список всех библиотек, которые ей нужны; для виндовса - не знаю, но уверен что тоже есть соответствующая программа. С ходу самые вероятные отсутствующие кандидаты - msvc* и icu*.
 
Это все касаемо rfunc; насчет AUDFL - а что в логах сервера при попытках вызова неработающих функций? И что значит "валит наглухо"? Подключиться с другой консоли/другой программы получается? С другого компьютера?

Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 17:16 24-09-2012
ant0ni02004

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
golkanavt
что еще может быть - права на запись в папку Firebird. всякие там "создатель владелец" итд

Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 19:16 24-09-2012
golkanavt



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
miwa
ant0ni02004
Спасибо за участие. Библиотеки все на месте, конфиги идентичны - сношу Fb 2.5, ставлю 2.1 - все работает. Обратное действие - как и сказано выше, валит коннект, а не сервер - уточняю, сначала казалось что сервак полностью валится, но нет, только коннект. В логах только это:

Цитата:
 
INET/inet_error: connect errno = 10061
INET/inet_error: read errno = 10054

 
Экспериментирую дальше.

----------
Shit happens...

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 21:30 24-09-2012
miwa

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
golkanavt
Это уже предметнее.
 
Какой вариант ФБ 2.5 стоит - классик, супер, суперклассик? Особо рекомендую дважды, а лучше трижды перепроверить разрядность всего используемого хозяйства - ОС, ФБ, всех библиотек (особенно AUDFL): все должно быть одной разрядности.

Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 22:06 24-09-2012
ant0ni02004

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
golkanavt
ну смотрите,
10054 = Connection reset by peer
10061 =  Connection refused
может быть это фаервол не пускает
без удф запросы хоть проходят?

Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 03:06 25-09-2012
exteris

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
golkanavt
Попробуйте положить рядом fbclient.dll c именем gds32.dll
 
Добавлено:
Хотя, FB 2.1 тогда бы тоже не работала

Всего записей: 382 | Зарегистр. 14-04-2003 | Отправлено: 08:34 25-09-2012
jonikDk



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
golkanavt
Вы на sql.ru не спрашивали? Там разработчики Firebird наверняка бы подсказали в каком направлении копать

Всего записей: 1603 | Зарегистр. 01-03-2004 | Отправлено: 10:16 25-09-2012
golkanavt



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
exteris
Да уже разные комбинации пробовал, суть не меняется.
jonikDk
Еще нет, т.к. пока что переход на 2.5 отложен, буду теперь в фоновом режиме разбираться. Без SQL.RU не обойтись, с этим переходом еще один косяк вылез - бэкап под 2.5 не ресторится без ключей FIX_ESS_DATA/METADATA, хотя ранее база уже проходила через конвертацию 1.5->2.1 с исправлением метаданных, тогда вволю оттоптался на граблях. И помимо всего, после рестора с ключами слетают все русские описания объектов, так что теперь плясок с бубном мне хватит надолго.
 
Добавлено:

Цитата:
Какой вариант ФБ 2.5 стоит - классик, супер, суперклассик? Особо рекомендую дважды, а лучше трижды перепроверить разрядность всего используемого хозяйства - ОС, ФБ, всех библиотек (особенно AUDFL): все должно быть одной разрядности.

Ставил супер, все хозяйство х86

----------
Shit happens...

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 14:31 25-09-2012
miwa

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
golkanavt
fix_fss_metadata - обязательный ЕДИНОРАЗОВЫЙ процесс при переходе с 2.1 на 2.5 из-за того, что в 2.5 вся внутренняя кухня в юникоде.
При чем этот ключ появился только в 2.5, так что при переходе с 1.5 на 2.1 вы что-то другое исправляли.
 
P.S. Я так и не понял, зависимости для audfl, или как там ее - вы проверяли?

Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 19:57 25-09-2012
golkanavt



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
fix_fss_metadata - обязательный ЕДИНОРАЗОВЫЙ процесс при переходе с 2.1 на 2.5 из-за того, что в 2.5 вся внутренняя кухня в юникоде.  
 При чем этот ключ появился только в 2.5, так что при переходе с 1.5 на 2.1 вы что-то другое исправляли.

В 2.1 внутренности тоже в юникоде, именно поэтому в релизноте сказано о конвертации базы посредством процедуры rdb$check_metadata/rdb$fix_metadata('WIN1251'), а в 2.5 этот функционал загнали в ключи, суть осталась та же. То есть по идее, после перехода на 2.1 в дальнейшем при переходе на 2.5 все метаданные уже должны быть пофиксены и не требовать использования этих ключей при ресторе.
Зависимости не проверял, т.к. как было сказано ранее - на той же машине с теми же конфигами но под 2.1 все работает как часы. Да и отложен сейчас этот вопрос с переходом на 2.5, есть другие задачи. Возможно на след. неделе к нему вернусь и отпишусь о результатах.

----------
Shit happens...

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 13:39 26-09-2012
miwa

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
golkanavt
Не флейма ради, но истины для.
 
Опция fix_fss_metadata в gbak появилась ТОЛЬКО в ФБ 2.5 как обязательный одноразовый ключ при переводе баз данных с более старых версий в случае, если в метаданных были неанглийские символы (в том числе кириллица). В 2.1 ее не было.  
 
В качестве подтверджения - ссылки на релизноты 2.1 (никаких упоминаний об fix_fss_metadata) и 2.5 (упоминания есть), а также тикет в трекере ФБ, в котором реализован соответствующий функционал. Советую обратить внимания на строчку "Fix versions".
Добавлено:
Не люблю исправлять задним числом ошибочные посты, но свои ошибки надо исправлять
 
Да, вспомнил, при переходе на 2.1 была процедура, которая фиксила метаданные в базе. Тоесть, функционал в gbak появился только в 2.5, но проблема была еще при переходе на 2.1 и решалась процедурой, которая исправляла кодировку метаданных правкой системных таблиц. А в 2.5 уже появился ключ в gbak. Прошу извинить, если ввел в заблуждение.
 

Цитата:
Зависимости не проверял, т.к. как было сказано ранее - на той же машине с теми же конфигами но под 2.1 все работает как часы.

Я правильно понимаю, что под 2.1 вы используете оригинальную УДФ, а под 2.5 - переделанную?
 
Кроме того, "с теме же конфигами" не значит "с теми же версиями системных библиотек". Особенно это касается микрософтовских рантаймов и всяких icu*.dll.
 

Цитата:
Да и отложен сейчас этот вопрос с переходом на 2.5, есть другие задачи. Возможно на след. неделе к нему вернусь и отпишусь о результатах.
 

Было бы неплохо - интересно, чем все закончится

Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 15:50 26-09-2012 | Исправлено: miwa, 15:59 26-09-2012
SergKhM

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
golkanavt
 
буквально сегодня возникла ситуация - перехожу у клиента с 1.5 на 2.5. Соединение клиента с сервером - Ок, но при попытке соединится с БД - отказ. Дело оказалось в заброшенном Internet security касперского.
Реально приложение не запускалось, но драйвера стояли и вредили.
 
Может и у Вас что-то подобное в фоне?

Всего записей: 83 | Зарегистр. 19-09-2009 | Отправлено: 19:56 26-09-2012
eddoc



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
miwa

Цитата:
решалась процедурой, которая исправляла кодировку метаданных правкой системных таблиц.

ткни, плз, таблю и поле

Всего записей: 328 | Зарегистр. 25-11-2007 | Отправлено: 19:52 27-09-2012
miwa

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
eddoc
Их там дофига Я лучше скопипастю сюда саму процедуру
 

Код:
 
set term !;
 
create or alter procedure rdb$fix_metadata
    (charset varchar(31) character set ascii)
returns
    (table_name char(31) character set unicode_fss,
     field_name char(31) character set unicode_fss,
     name1 char(31) character set unicode_fss,
     name2 char(31) character set unicode_fss)
as
    declare variable system integer;
    declare variable field1 char(31) character set unicode_fss;
    declare variable field2 char(31) character set unicode_fss;
    declare variable has_records integer;
begin
    for select rf.rdb$relation_name, rf.rdb$field_name,
               (select 1 from rdb$relation_fields
                   where rdb$relation_name = rf.rdb$relation_name and
                         rdb$field_name = 'RDB$SYSTEM_FLAG'),
               case rdb$relation_name
                   when 'RDB$CHARACTER_SETS' then 'RDB$CHARACTER_SET_NAME'
                   when 'RDB$COLLATIONS' then 'RDB$COLLATION_NAME'
                   when 'RDB$EXCEPTIONS' then 'RDB$EXCEPTION_NAME'
                   when 'RDB$FIELDS' then 'RDB$FIELD_NAME'
                   when 'RDB$FILTERS' then 'RDB$INPUT_SUB_TYPE'
                   when 'RDB$FUNCTIONS' then 'RDB$FUNCTION_NAME'
                   when 'RDB$GENERATORS' then 'RDB$GENERATOR_NAME'
                   when 'RDB$INDICES' then 'RDB$INDEX_NAME'
                   when 'RDB$PROCEDURES' then 'RDB$PROCEDURE_NAME'
                   when 'RDB$PROCEDURE_PARAMETERS' then 'RDB$PROCEDURE_NAME'
                   when 'RDB$RELATIONS' then 'RDB$RELATION_NAME'
                   when 'RDB$RELATION_FIELDS' then 'RDB$RELATION_NAME'
                   when 'RDB$ROLES' then 'RDB$ROLE_NAME'
                   when 'RDB$TRIGGERS' then 'RDB$TRIGGER_NAME'
                   else NULL
               end,
               case rdb$relation_name
                   when 'RDB$FILTERS' then 'RDB$OUTPUT_SUB_TYPE'
                   when 'RDB$PROCEDURE_PARAMETERS' then 'RDB$PARAMETER_NAME'
                   when 'RDB$RELATION_FIELDS' then 'RDB$FIELD_NAME'
                   else NULL
               end
            from rdb$relation_fields rf
            join rdb$fields f
                on (rf.rdb$field_source = f.rdb$field_name)
            where f.rdb$field_type = 261 and f.rdb$field_sub_type = 1 and
                  f.rdb$field_name <> 'RDB$SPECIFIC_ATTRIBUTES' and
                  rf.rdb$relation_name starting with 'RDB$'
            order by rf.rdb$relation_name
        into :table_name, :field_name, :system, :field1, :field2
    do
    begin
        name1 = null;
        name2 = null;
 
        if (field1 is null and field2 is null) then
        begin
            has_records = null;
 
            execute statement
                'select first 1 1 from ' || table_name ||
                '    where ' || field_name || ' is not null' ||
                iif(system = 1, ' and coalesce(rdb$system_flag, 0) in (0, 3)', '')
                into :has_records;
 
            if (has_records = 1) then
            begin
                suspend;
 
                execute statement
                    'update ' || table_name || ' set ' || field_name || ' = ' ||
                    '    cast(cast(' || field_name || ' as blob sub_type text character set none) as ' ||
                    '        blob sub_type text character set ' || charset || ') ' ||
                    iif(system = 1, 'where coalesce(rdb$system_flag, 0) in (0, 3)', '');
            end
        end
        else
        begin
            for execute statement
                    'select ' || field1 || ', ' || coalesce(field2, ' null') || ' from ' || table_name ||
                    '    where ' || field_name || ' is not null' ||
                    iif(system = 1, ' and coalesce(rdb$system_flag, 0) in (0, 3)', '')
                into :name1, :name2
            do
            begin
                suspend;
 
                execute statement
                    'update ' || table_name || ' set ' || field_name || ' = ' ||
                    '    cast(cast(' || field_name || ' as blob sub_type text character set none) as ' ||
                    '        blob sub_type text character set ' || charset || ') ' ||
                    '    where ' || field1 || ' = ''' || name1 || '''' ||
                    iif(name2 is null, '', ' and ' || field2 || ' = ''' || name2 || '''');
            end
        end
    end
end!
 
commit!
 
set term ;!
 

Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 20:35 27-09-2012
NikRON

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
golkanavt
воспользуйся IBExpert'ом для переноса БД в Firebird 2.5..
не забудь при создании бэкапа выставить формат "Transportable", а при восстановление выставить поля, начинающиеся на "Fix mailformed UNICODE_FSS..."
 
у меня без проблем БД из Firebird 1.5 в Firebird 2.5 конвертнулась..

Всего записей: 10 | Зарегистр. 04-04-2007 | Отправлено: 11:17 28-09-2012
miwa

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NikRON
Иногда лучше жевать молчать.

Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 11:08 29-09-2012
eddoc



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NikRON
имхо, если уж мигрировать на FB 2.5, то лучше воссоздать скелет базы из скрипта с метаданными, а затем перелить данные с нужной кодировкой IBPump'om (кстати, у меня он отказывался работать, пока из всего зоопарка серверов я не оставил лишь один да и то в качестве службы. Проверьте, плз, прав ли я в своих догадках?)

Всего записей: 328 | Зарегистр. 25-11-2007 | Отправлено: 12:11 02-10-2012
noisy

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
eddoc
 
Проще не IBPump (который кстати уже стар) а fbclone  
fbclone - сам создаст структуру и перенесет данные

Всего записей: 986 | Зарегистр. 30-05-2002 | Отправлено: 16:05 02-10-2012
eddoc



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
noisy

Цитата:
Проще не IBPump (который кстати уже стар)

Поскольку это утилита командной строки и у него нет ГУЕв, то она больше подходит для суровых сибирских лесорубов любителей стучать пальцами по клаве в cmd-окошке  
 
Так что, все относительно ...  
 
Добавлено: а вот кстати и хелп к нему

Всего записей: 328 | Зарегистр. 25-11-2007 | Отправлено: 10:28 03-10-2012 | Исправлено: eddoc, 12:05 03-10-2012
druff

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос, может не совсем по firebird..
 
есть несколько таблиц вида
table1 с полями value1_1, value1_2, .. value1_N, date_start1
table2 с полями value2_1, value2_2, .. value2_N, date_start2
...
и так далее. фактически это какие-то справочники необходимые для расчётов, где значения в поле date_start содержат информацию о том, что с этой даты вступают в силу значения указанные в этой строке.
 
какой алгоритм посоветуете, для того чтобы данные этих справочников объединить в одну таблицу, в которой будут перечислены все поля из этих таблиц (кроме дат) и так же дата, с тем же смыслом что и в старых таблицах.  
Например есть  
таблица 1
значение1 дата1
10             01.01.2012
15             01.05.2012
 
таблица 2
значение2 дата2
1             01.01.2012
3             01.07.2012
 
в результате нужно получить такие данные
дата                 значение1  значение2
01.01.2012            10               1
01.05.2012            15               1
01.07.2012            15               3

Всего записей: 402 | Зарегистр. 14-11-2006 | Отправлено: 17:25 03-10-2012
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » InterBase и FireBird: вопросы по работе и их решение


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru