FAQ по установке Firebird 2.1 на Windows

kdv, www.ibase.ru, 04.07.2008

Firebird 2.1 как в коде так и в дистрибутиве содержит ряд изменений, которые в некоторых случаях вызывают проблемы с использованием Firebird. Ниже приведен перечень этих проблем и способ их решения.

1. При попытке соединения с чарсетом WIN1251 возникает ошибка

текст ошибки:

"bad parameters on attach or create database
CHARACTER SER WIN1251 is not defined"

Ответ: такое могло происходить и раньше, если сервер не находил или не мог загрузить библиотеку кодировок fbintl.dll. В Firebird 2.1 эта библиотека не может загрузиться как правило из-за того, что инсталлятор Firebird не смог установить Visual Studio 2005 Runtime. Это, в свою очередь, происходит из-за отсутствия в системе MS Installer 3.0.

Исправить проблему можно двумя способами:

  1. ! этот способ может не работать на конкретной версии ОС (например на windows 2003). Скопировать из каталога bin файл Microsoft.VC80.CRT.manifest вручную (это текстовый файл) в каталоги intl и udf, а затем скорректировать в копиях manifest пути к библиотекам msvcr80.dll и msvcp80.dll , чтобы они указывали на эти файлы, находящиеся в каталоге bin установки Firebird 2.1.
  2. Установить Windows Installer 3.0 Redistrubutable (его нет, например, если в Windows 2003 Server отключено авто-обновление), а затем установить Visual C++ 2005 Redistributable package (не с SP1. несмотря на то, что редистрибутив с SP1 называется идентично, и туда входят "похожие" файлы, данные файлы не будут использоваться Firebird 2.1).

Пытаться исправить проблему копированием файлов msvc*80.dll в system32 на операционных системах Windows XP и выше категорически не рекомендуется, т.к. при этом библиотеки рантайма загружаться не будут. Это также может быть источником проблемы, даже если в системе установлены Windows Installer и VC Runtime.

Также есть отличия между Firebird 2.1.0-2.1.1 и 2.1.2 и выше

  • для 2.1.1 и 2.1.0 при ручной установке файлов рантайма потребуется копирование ВСЕХ файлов рантайма в папки bin, intl и udf
  • для 2.1.2 и выше файлы рантайма требуются только в bin

2. Ошибка "cannot transliterate" при чтении текста процедур, триггеров и т.д.

Если вы работаете с IBExpert или подобным инструментом, который при открытии БД загружает в свой кэш метаданные БД, то такая ошибка будет возникать сразу при открытии БД.

Эта проблема связана с изменением (коррекцией) хранения метаданных в Firebird 2.1. Если у вас в процедурах, триггерах или других объектах есть комментарии или строковые константы в кодировке win1251, то вам необходимо провести процедуру миграции метаданных. Процедура изложена в этом документе - http://www.ibase.ru/metadata_charset/

Спасибо Дмитрию Гоголю и Владу Хорсуну за замечания и дополнения.


(c) iBase.ru, 2008.

Подпишитесь на новости Firebird в России

Подписаться