Страница 1 из 1
Проблемы Inerbase4.2 -> Firebird 1.5
Добавлено: 23 ноя 2004, 11:47
Andrew
Есть некий софт работающий с Interbase 4.2, если базы перенести (backup/restore) на Firebird1.5, то в принципе он работает, но если клиентов поставить тоже от Firebird1.5, то начинают валиться ошибки типа: General SQL error.
Token unknown - line 1, char 12
YEAR
А клиенты должны соответствовать версии сервера.
Как быть?
Re: Проблемы Inerbase4.2 -> Firebird 1.5
Добавлено: 23 ноя 2004, 13:16
Merlin
Andrew писал(а):Есть некий софт работающий с Interbase 4.2, если базы перенести (backup/restore) на Firebird1.5, то в принципе он работает, но если клиентов поставить тоже от Firebird1.5, то начинают валиться ошибки типа: General SQL error.
Token unknown - line 1, char 12
YEAR
А клиенты должны соответствовать версии сервера.
Как быть?
Ознакомиться со списком ключевых слов начиная с IB6 и убедиться, что Year туда таки попал и что без приложения рук в этом плане перейти на современные версии не судьба. Либо переименовать поля, названные ключевыми словами, либо переходить на 3-й диалект и мучиться с идентификаторами в кавычках.
Re: Проблемы Inerbase4.2 -> Firebird 1.5
Добавлено: 23 ноя 2004, 13:34
Мозгокрут 13-ый
Merlin писал(а): Либо переименовать поля, названные ключевыми словами, либо переходить на 3-й диалект и мучиться с идентификаторами в кавычках.
не обобщай. "мучиться" ему придется только со столбцом "YEAR" и названными аналогично. В остальном в третьем диалекте "мучения" с двойными кавычками - добровольное желание разработчика. Я например, их не люблю и не использую, вот и все.
Проблемы Inerbase4.2 -> Firebird 1.5
Добавлено: 23 ноя 2004, 13:59
Andrew
Значит, получается что Dialect 1 в Firebird1.5 несколько не такой как в Interbase4.2?
Т.е. нет полной совместимости.
И почему если установить клиент от Interbase4.2 софтина таки работает и не ругается?
Добавлено: 23 ноя 2004, 16:56
kdv
потому что
а) совместимость между клиентами разных серверов конечно есть, но гарантий безупречной работы никто не даст
б) клиент 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 и т.п..
Добавлено: 23 ноя 2004, 17:24
Merlin
kdv писал(а):потому что
p.s. проблема еще в том, что в оригинальном IB6 функция EXTRACT доступна для диалекта 1. отсюда несовместимость с YEAR и т.п..
Просто в IB6 расширили список ключевых слов, независимо от диалектов. Для Extract датные вяские слова - год, месяц, день, день недели, день года, может ещё что, не помню. Для alter table alter column - TYPE. Вроде всё.
Проблемы Inerbase4.2 -> Firebird 1.5
Добавлено: 25 ноя 2004, 15:03
Andrew
Саппорт того софта(который официально работает только с Inerbase4.2) сказал что мол с Firebird1.5 юзайте клиента от Interbase4.2 и проблем не будет, все мол протестировано.
Так что скорее всего, когда обращаемся к Firebird1.5 клиентом Interbase4.2, тот видит что клиент работает только на 1 диалекте и ошибок не возникает, а если клиент от Firebird1.5, то видимо надо специально указать диалект. Софтина по определению не умеет указывать и работает через BDE. Может какие настройки у клиента есть?
Re: Проблемы Inerbase4.2 -> Firebird 1.5
Добавлено: 25 ноя 2004, 16:37
Merlin
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 РАБОТАЕТ ВООБЩЕ БЕЗ ОШИБОК??? Если на сервер передаются ключевые слова в неправильном контексте, как она вообще в таком случае работает?
Проблемы Inerbase4.2 -> Firebird 1.5
Добавлено: 25 ноя 2004, 17:00
Andrew
Это был я

(в смысле Гость)
Re: Проблемы Inerbase4.2 -> Firebird 1.5
Добавлено: 17 дек 2004, 11:25
Andrew
Нарыл в документации, если я правильно понял (все таки английская документация), то:
если обращаться к базе старым клиентом (IB5 и наверное справедливо и для IB4.2) сервер FB1.5 все запросы и ответы сам конвертнет в нужный формат и поэтому ошибок не возникает.
а если работать новым клиентом, то никаких конвертаций не будет и всплывают ошибки на ключевых словах 1 диалекта FB1.5, которых нет в IB4.2
Т.о. делаем вывод без переделки базы и ПО можно работать с FB1.5, но клиента нужно оставить от IB4.2