Проблемы Inerbase4.2 -> Firebird 1.5
Проблемы Inerbase4.2 -> Firebird 1.5
Есть некий софт работающий с Interbase 4.2, если базы перенести (backup/restore) на Firebird1.5, то в принципе он работает, но если клиентов поставить тоже от Firebird1.5, то начинают валиться ошибки типа: General SQL error.
Token unknown - line 1, char 12
YEAR
А клиенты должны соответствовать версии сервера.
Как быть?
Token unknown - line 1, char 12
YEAR
А клиенты должны соответствовать версии сервера.
Как быть?
Re: Проблемы Inerbase4.2 -> Firebird 1.5
Ознакомиться со списком ключевых слов начиная с IB6 и убедиться, что Year туда таки попал и что без приложения рук в этом плане перейти на современные версии не судьба. Либо переименовать поля, названные ключевыми словами, либо переходить на 3-й диалект и мучиться с идентификаторами в кавычках.Andrew писал(а):Есть некий софт работающий с Interbase 4.2, если базы перенести (backup/restore) на Firebird1.5, то в принципе он работает, но если клиентов поставить тоже от Firebird1.5, то начинают валиться ошибки типа: General SQL error.
Token unknown - line 1, char 12
YEAR
А клиенты должны соответствовать версии сервера.
Как быть?
-
- Сообщения: 10
- Зарегистрирован: 18 ноя 2004, 22:15
Re: Проблемы Inerbase4.2 -> Firebird 1.5
не обобщай. "мучиться" ему придется только со столбцом "YEAR" и названными аналогично. В остальном в третьем диалекте "мучения" с двойными кавычками - добровольное желание разработчика. Я например, их не люблю и не использую, вот и все.Merlin писал(а): Либо переименовать поля, названные ключевыми словами, либо переходить на 3-й диалект и мучиться с идентификаторами в кавычках.
Проблемы Inerbase4.2 -> Firebird 1.5
Значит, получается что Dialect 1 в Firebird1.5 несколько не такой как в Interbase4.2?
Т.е. нет полной совместимости.
И почему если установить клиент от Interbase4.2 софтина таки работает и не ругается?
Т.е. нет полной совместимости.
И почему если установить клиент от Interbase4.2 софтина таки работает и не ругается?
потому что
а) совместимость между клиентами разных серверов конечно есть, но гарантий безупречной работы никто не даст
б) клиент 4.2 лезет к БД с жестко установленным диалектом 1 в вызове isc_attach_database. А клиент, поддерживающий диалекты 1 и 3, или сам устанавливает это число, или получает его с сервера.
Когда с сервера получен диалект 3, а клиент 6.x работает с ....
ну к черту, читайте getstart.pdf от 6.0. там все вопросы миграции подробно описаны, в том числе взаимодействие клиента и сервера разных версий (где то или таблица есть, или еще что).
www.ibase.ru/v6/doc/getstart.zip
вроде страница 19, Clients and databases
p.s. проблема еще в том, что в оригинальном IB6 функция EXTRACT доступна для диалекта 1. отсюда несовместимость с YEAR и т.п..
а) совместимость между клиентами разных серверов конечно есть, но гарантий безупречной работы никто не даст
б) клиент 4.2 лезет к БД с жестко установленным диалектом 1 в вызове isc_attach_database. А клиент, поддерживающий диалекты 1 и 3, или сам устанавливает это число, или получает его с сервера.
Когда с сервера получен диалект 3, а клиент 6.x работает с ....
ну к черту, читайте getstart.pdf от 6.0. там все вопросы миграции подробно описаны, в том числе взаимодействие клиента и сервера разных версий (где то или таблица есть, или еще что).
www.ibase.ru/v6/doc/getstart.zip
вроде страница 19, Clients and databases
p.s. проблема еще в том, что в оригинальном IB6 функция EXTRACT доступна для диалекта 1. отсюда несовместимость с YEAR и т.п..
Просто в IB6 расширили список ключевых слов, независимо от диалектов. Для Extract датные вяские слова - год, месяц, день, день недели, день года, может ещё что, не помню. Для alter table alter column - TYPE. Вроде всё.kdv писал(а):потому что
p.s. проблема еще в том, что в оригинальном IB6 функция EXTRACT доступна для диалекта 1. отсюда несовместимость с YEAR и т.п..
Проблемы Inerbase4.2 -> Firebird 1.5
Саппорт того софта(который официально работает только с Inerbase4.2) сказал что мол с Firebird1.5 юзайте клиента от Interbase4.2 и проблем не будет, все мол протестировано.
Так что скорее всего, когда обращаемся к Firebird1.5 клиентом Interbase4.2, тот видит что клиент работает только на 1 диалекте и ошибок не возникает, а если клиент от Firebird1.5, то видимо надо специально указать диалект. Софтина по определению не умеет указывать и работает через BDE. Может какие настройки у клиента есть?
Так что скорее всего, когда обращаемся к Firebird1.5 клиентом Interbase4.2, тот видит что клиент работает только на 1 диалекте и ошибок не возникает, а если клиент от Firebird1.5, то видимо надо специально указать диалект. Софтина по определению не умеет указывать и работает через BDE. Может какие настройки у клиента есть?
Re: Проблемы Inerbase4.2 -> Firebird 1.5
Вот же упэртый як хохолAndrew писал(а):Саппорт того софта(который официально работает только с Inerbase4.2) сказал что мол с Firebird1.5 юзайте клиента от Interbase4.2 и проблем не будет, все мол протестировано.
Так что скорее всего, когда обращаемся к Firebird1.5 клиентом Interbase4.2, тот видит что клиент работает только на 1 диалекте и ошибок не возникает, а если клиент от Firebird1.5, то видимо надо специально указать диалект. Софтина по определению не умеет указывать и работает через BDE. Может какие настройки у клиента есть?

Re: Проблемы Inerbase4.2 -> Firebird 1.5
Дык почему с клиентом от Interbase4.2 РАБОТАЕТ ВООБЩЕ БЕЗ ОШИБОК??? Если на сервер передаются ключевые слова в неправильном контексте, как она вообще в таком случае работает?Merlin писал(а): Вот же упэртый як хохолНу не имеют отношения ключевые слова к диалекту, они используются и в первом. Что там отсекает парсер клиента, что сервера не знаю, ибо никогда не было интересно. И что проистечёт от того, что старый клиент пропустит что-то, чего пропускать не должен, на сервер, тоже. Смутно помню, что какие-то грабли есть, вплоть до порчи базы, но, возможно, есть режимы использования, в которых они не вылезают на поверхность.
Re: Проблемы Inerbase4.2 -> Firebird 1.5
Нарыл в документации, если я правильно понял (все таки английская документация), то:
если обращаться к базе старым клиентом (IB5 и наверное справедливо и для IB4.2) сервер FB1.5 все запросы и ответы сам конвертнет в нужный формат и поэтому ошибок не возникает.
а если работать новым клиентом, то никаких конвертаций не будет и всплывают ошибки на ключевых словах 1 диалекта FB1.5, которых нет в IB4.2
Т.о. делаем вывод без переделки базы и ПО можно работать с FB1.5, но клиента нужно оставить от IB4.2
если обращаться к базе старым клиентом (IB5 и наверное справедливо и для IB4.2) сервер FB1.5 все запросы и ответы сам конвертнет в нужный формат и поэтому ошибок не возникает.
а если работать новым клиентом, то никаких конвертаций не будет и всплывают ошибки на ключевых словах 1 диалекта FB1.5, которых нет в IB4.2
Т.о. делаем вывод без переделки базы и ПО можно работать с FB1.5, но клиента нужно оставить от IB4.2