Проблемы Inerbase4.2 -> Firebird 1.5

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

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

Ответить
Andrew

Проблемы Inerbase4.2 -> Firebird 1.5

Сообщение Andrew » 23 ноя 2004, 11:47

Есть некий софт работающий с Interbase 4.2, если базы перенести (backup/restore) на Firebird1.5, то в принципе он работает, но если клиентов поставить тоже от Firebird1.5, то начинают валиться ошибки типа: General SQL error.
Token unknown - line 1, char 12
YEAR
А клиенты должны соответствовать версии сервера.
Как быть?

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

Re: Проблемы Inerbase4.2 -> Firebird 1.5

Сообщение Merlin » 23 ноя 2004, 13:16

Andrew писал(а):Есть некий софт работающий с Interbase 4.2, если базы перенести (backup/restore) на Firebird1.5, то в принципе он работает, но если клиентов поставить тоже от Firebird1.5, то начинают валиться ошибки типа: General SQL error.
Token unknown - line 1, char 12
YEAR
А клиенты должны соответствовать версии сервера.
Как быть?
Ознакомиться со списком ключевых слов начиная с IB6 и убедиться, что Year туда таки попал и что без приложения рук в этом плане перейти на современные версии не судьба. Либо переименовать поля, названные ключевыми словами, либо переходить на 3-й диалект и мучиться с идентификаторами в кавычках.

Мозгокрут 13-ый
Сообщения: 10
Зарегистрирован: 18 ноя 2004, 22:15

Re: Проблемы Inerbase4.2 -> Firebird 1.5

Сообщение Мозгокрут 13-ый » 23 ноя 2004, 13:34

Merlin писал(а): Либо переименовать поля, названные ключевыми словами, либо переходить на 3-й диалект и мучиться с идентификаторами в кавычках.
не обобщай. "мучиться" ему придется только со столбцом "YEAR" и названными аналогично. В остальном в третьем диалекте "мучения" с двойными кавычками - добровольное желание разработчика. Я например, их не люблю и не использую, вот и все.

Andrew

Проблемы Inerbase4.2 -> Firebird 1.5

Сообщение Andrew » 23 ноя 2004, 13:59

Значит, получается что Dialect 1 в Firebird1.5 несколько не такой как в Interbase4.2?
Т.е. нет полной совместимости.
И почему если установить клиент от Interbase4.2 софтина таки работает и не ругается?

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

Сообщение kdv » 23 ноя 2004, 16:56

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

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

Сообщение Merlin » 23 ноя 2004, 17:24

kdv писал(а):потому что
p.s. проблема еще в том, что в оригинальном IB6 функция EXTRACT доступна для диалекта 1. отсюда несовместимость с YEAR и т.п..
Просто в IB6 расширили список ключевых слов, независимо от диалектов. Для Extract датные вяские слова - год, месяц, день, день недели, день года, может ещё что, не помню. Для alter table alter column - TYPE. Вроде всё.

Andrew

Проблемы Inerbase4.2 -> Firebird 1.5

Сообщение Andrew » 25 ноя 2004, 15:03

Саппорт того софта(который официально работает только с Inerbase4.2) сказал что мол с Firebird1.5 юзайте клиента от Interbase4.2 и проблем не будет, все мол протестировано.
Так что скорее всего, когда обращаемся к Firebird1.5 клиентом Interbase4.2, тот видит что клиент работает только на 1 диалекте и ошибок не возникает, а если клиент от Firebird1.5, то видимо надо специально указать диалект. Софтина по определению не умеет указывать и работает через BDE. Может какие настройки у клиента есть?

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

Re: Проблемы Inerbase4.2 -> Firebird 1.5

Сообщение Merlin » 25 ноя 2004, 16:37

Andrew писал(а):Саппорт того софта(который официально работает только с Inerbase4.2) сказал что мол с Firebird1.5 юзайте клиента от Interbase4.2 и проблем не будет, все мол протестировано.
Так что скорее всего, когда обращаемся к Firebird1.5 клиентом Interbase4.2, тот видит что клиент работает только на 1 диалекте и ошибок не возникает, а если клиент от Firebird1.5, то видимо надо специально указать диалект. Софтина по определению не умеет указывать и работает через BDE. Может какие настройки у клиента есть?
Вот же упэртый як хохол :) Ну не имеют отношения ключевые слова к диалекту, они используются и в первом. Что там отсекает парсер клиента, что сервера не знаю, ибо никогда не было интересно. И что проистечёт от того, что старый клиент пропустит что-то, чего пропускать не должен, на сервер, тоже. Смутно помню, что какие-то грабли есть, вплоть до порчи базы, но, возможно, есть режимы использования, в которых они не вылезают на поверхность.

Гость

Re: Проблемы Inerbase4.2 -> Firebird 1.5

Сообщение Гость » 25 ноя 2004, 16:46

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

Andrew

Проблемы Inerbase4.2 -> Firebird 1.5

Сообщение Andrew » 25 ноя 2004, 17:00

Это был я :) (в смысле Гость)

Andrew

Re: Проблемы Inerbase4.2 -> Firebird 1.5

Сообщение Andrew » 17 дек 2004, 11:25

Нарыл в документации, если я правильно понял (все таки английская документация), то:
если обращаться к базе старым клиентом (IB5 и наверное справедливо и для IB4.2) сервер FB1.5 все запросы и ответы сам конвертнет в нужный формат и поэтому ошибок не возникает.
а если работать новым клиентом, то никаких конвертаций не будет и всплывают ошибки на ключевых словах 1 диалекта FB1.5, которых нет в IB4.2
Т.о. делаем вывод без переделки базы и ПО можно работать с FB1.5, но клиента нужно оставить от IB4.2

Ответить