Сравнение качества кода firebird, mysql и postgresql
Содержание:
Firebird что это за программа?

- 1 Firebird. Что НЕ надо делать
- 1.1 Не надо логиниться к одной базе с разными путями
- 1.2 Не надо выбирать на клиента большие обьемы данных
- 1.3 Не надо получать новый номер путем SELECT MAX(ID)+1
- 1.4 Не надо устанавливать значения генераторов (например в 0) внутри процедур и тем более триггеров
- 1.5 Не надо делать большие расчеты в одной транзакции
- 1.6 Не надо делать PageSize = 1024 или 2048
- 1.7 Не надо делать коммит после каждой записи, если это не требуется по смыслу
- 1.8 Не надо делать commit после вставки каждой записи, если вы их вставляете больше 10 за один раз
- 1.9 Не надо увлекаться ссылочной целостностью больше чем это требуется
- 1.10 Не создавайте ненужные индексы
- 1.11 Не стройте индексы по полям, содержащим наименьшее количество разных значений
- 1.12 Не стройте индексы по полям PK, FK, UNIQUE
- 1.13 Не рекомендуется увлекаться outer join
- 1.14 Не рекомендуется использовать связку «таблица+ХП»
- 1.15 Не рекомендуется употреблять подзапросы в списочном контексте, то есть in (…), =all(…), =some(…)
- 1.16 Не надо увлекаться компонентом TTable и аналогичными
- 1.17 Нельзя создавать триггеры с именами вроде CHECK_xxx
- 1.18 Не рекомендуется создавать свои объекты с префиксом RDB$
- 1.19 Не рекомендуется создавать роль (role) с именем любого из существующих пользователей
- 1.20 Не надо использовать тип FLOAT
- 1.21 Не используйте маски (*.gdb) для gbak!!!
- 1.22 Не создавайте столбцы с одинаковыми именами но в разном регистре в третьем диалекте
- 1.23 Не надо копировать базу обычной файловой командой (операцией) copy в то время, когда сервер работает с базой
- 1.24 Не надо делать restore (gbak -r) поверх существующей базы данных
- 1.25 Ни в коем случае не меняйте во время работы доменное имя сервера
- 1.26 Нельзя в одной транзакции менять медаданные и тут же выполнять запросы, которые используют эти метаданные
- 1.27 Не нужно смешивать в одном запросе синтаксис явных и неявных JOIN
- 2 Характеристики программы для работы с базами данных Firebird
- 3 Firebird – что это за программа и как с ней работать
Добавил admin | Категория Наши материалы | 12 Августа 2014
Не надо логиниться к одной базе с разными путями
В этом случае очень вероятно повреждение базы вплоть до ее полного уничтожения. Т.е. не надо использовать link-и на файлы и каталоги БД в unix, и не надо ошибаться и под win писать путь коннекта как c:dir\data.gdb вместо правильного c:\dir\data.gdb.этот совет не относится к разным именам одного и того же сервера в строке коннекта.
Запуск набора тестов базы данных FPC
Может быть полезно запускать среду тестирования базы данных FPC (в каталоге packages\fcl-db\tests), когда вы охотитесь за ошибками, пытаетесь выяснить, как что-то работает или улучшаете код базы данных.
Сообщаем платформе, какую базу данных использовать
Вам нужно будет отредактировать INI-файл db test framework, чтобы сообщить исполняемому файлу теста, что ему нужно использовать вашу встроенную базу данных.
См. для получения инструкций о том, как это сделать.
Создание тестовой базы данных
Если вы настроили среду для использования Firebird, вам нужно будет подготовить среду для тестирования.
Скопируйте библиотеки embedded Firebird и другие файлы для вашей архитектуры в тестовый каталог.
Затем создайте тестовую базу данных — вручную или программно/
Создание базы данных вручную
isql
create database 'test.fdb' user 'SYSDBA' password 'masterkey' page_size 16384 default character set UTF8; exit;
Программное создание базы данных
Вы можете программно создать базу данных. В приведенном ниже примере создается локальная встроенная база данных, но ее можно легко изменить на удаленную базу данных (измените имя хоста и, если необходимо, путь):
program firebirdembeddedtest;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes, SysUtils,
sqldb, IBConnection {for Firebird};
const
// Имя для базы данных. Обязательно укажите одно и то же имя в вашем database.ini
DatabaseFile = 'test.fdb'; //Разумное имя для тестовой базы данных, верно?
var
Fire TIBConnection;
begin
//Подключение к базе данных Firebird
//Следующая строка нужна для довольно старых версий FPC
//UseEmbeddedFirebird: = true;
//Более новые версии сначала будут искать файл fbembed.dll в каталоге приложения автоматически
//Использование встроенного (и fbembed.dll) или обычного клиент/сервера (fbclient.dll) требует использования ibase60dyn
Fire:=TIBConnection.Create(nil);
try
Fire.HostName := ''; //должен быть пустым для embedded Firebird; должен быть заполнен для клиент/сервера Firebird
Fire.DatabaseName := DatabaseFile; //(путь и ) имя файла
// Имя пользователя и пароль не имеют значения для аутентификации, но вы получаете авторизацию в базе данных
// на основе имени (и, возможно, роли), которое вы даете.
Fire.Username := 'SYSDBA';
Fire.Password := 'masterkey'; //пароль для SYSDBA по умолчанию
Fire.Charset := 'UTF8'; //Отправка и получение строковых данных в кодировке UTF8
Fire.Dialect := 3; //Никто больше не использует диалекты 1 или 2 (прим.перев.: это справедливо лишь в отношении новых проектов)
Fire.Params.Add('PAGE_SIZE=16384'); //Мне нравится большой размер страницы (используется при создании базы данных). Полезно для больших индексов ⇒ больший возможный размер столбца
// Выясните, есть ли база данных в каталоге приложения.
// Если нет, создайте его. Примечание: это может не сработать, если у вас недостаточно прав.
// Если вы используете клиент / сервер, вам явно не нужна эта часть кода.
if (not FileExists(DatabaseFile)) then
begin
writeln('Файл '+DatabaseFile+' не существует.');
writeln('Создание базы данных Firebird embedded ...');
// Создаем базу данных, поскольку она не существует
try
Fire.CreateDB; //Создаем файл базы данных.
except
on E Exception do
begin
writeln('ОШИБКА при создании базы данных. Возможно проблемы с загрузкой встроенной библиотеки:');
writeln('- не все файлы присутствуют');
writeln('- неправильная архитектура (например, 32 бит вместо 64 бит)');
writeln('Exception message:');
writeln(E.ClassName+'/'+E.Message);
end;
end;
Fire.Close;
end;
finally
Fire.Free;
end;
end.
Наконец, скомпилируйте и запустите dbtestframework.pas программы тестирования базы данных. Он должен генерировать вывод состояния на консоли и вывод XML в файлах с результатами теста, которые можно проанализировать и отправить разработчикам.
Логическая репликация
В Firebird 4.0 предоставляет встроенную поддержку однонаправленной логической репликации. Репликация, в первую очередь обеспечивает высокую доступность, но может использоваться и для других задач.
Репликация отслеживает следующие события:
- добавление, обновление и удаление записей в таблицах
- изменение последовательностей (генераторов)
- DDL операторы
Поддерживаются синхронный и асинхронный режимы.
При синхронной репликации основная (главная) база данных постоянно подключена к репликам (подчиненным базам данных) и изменения реплицируются немедленно. По сути, базы данных синхронизируются после каждой фиксации каждой транзакции, что может повлиять на производительность из-за дополнительного сетевого трафика.
При асинхронной репликации изменения записываются в файлы локального журнала, передаются по сети и применяются к реплике базы данных. Влияние на производительность намного меньше, но вызывает задержку (отставание репликации) пока изменения ожидают применения к реплике базы данных, т.е. реплика базы данных всегда «догоняет» основную базу данных.
Описание
Оператор GRANT предоставляет одну или несколько привилегий для объектов базы данных пользователям, ролям, хранимым процедурам, триггерам и представлениям.
Авторизованный пользователь не имеет никаких привилегий до тех пор, пока какие либо права не будут предоставлены ему явно. При создании объекта только его создатель и SYSDBA имеет привилегии на него и может назначать привилегии другим пользователям, ролям или объектам.
Для таблиц существуют следующие привилегии:
| Привилегия | Описание |
|---|---|
| ALL | Объединяет привилегии SELECT, INSERT, UPDATE, DELETE и REFERENCES. |
| SELECT | Разрешает выборку данных из таблицы или представления. |
| INSERT | Разрешает добавлять записи в таблицу или представление. |
| UPDATE | Разрешает изменять записи в таблице или представлении. Можно указать ограничения, чтобы можно было изменять только указанные столбцы. |
| DELETE | Разрешает удалять записи из таблицы или представления. |
| REFERENCES | Привилегия позволяет создавать внешний ключ, который использует один или более столбцов этой таблицы, как родительский ключ. Вы можете ограничить эту привилегию для определенных столбцов. |
Для выполнения хранимых процедур существует отдельная привилегия EXECUTE. Она позволяет выполнять хранимые процедуры и делать выборку данных из процедур выбора (с помощью оператора SELECT).
В предложении TO указывается список пользователей, ролей и объектов базы данных (процедур, триггеров и представлений) для которых будут выданы перечисленные привилегии. Необязательные предложения USER и ROLE позволяют уточнить, кому именно выдается привилегия. Если ключевое слово USER или ROLE не указано, то сервер проверяет, существует ли роль с данным именем, если таковой не существует, то привилегии назначаются пользователю. Существование пользователя, которому выдаются права, не проверяются при выполнении оператора GRANT. Если привилегия выдается объекту базы данных, то необходимо обязательно указывать тип объекта.
Замечание:
Несмотря на то, что ключевые слова USER и ROLE не обязательные, желательно использовать их, чтобы избежать путаницы.
В SQL существует специальный пользователь PUBLIC, представляющий всех пользователей. Если какая-то операция разрешена пользователю PUBLIC, значит, любой аутентифицированный пользователь может выполнить эту операцию над указанным объектом.
Замечание:
Если привилегии назначены пользователю PUBLIC, то отозваны они должны быть у пользователя PUBLIC.
Необязательное предложение WITH GRANT OPTION позволяет пользователям, указанным в списке пользователей, передавать другим пользователям привилегии указанные в списке привилегий.
Другое назначение оператора GRANT заключается в назначении ролей для группы перечисленных пользователей. В этом случае после предложения GRANT следует список ролей, которые будут назначены списку пользователей, указанному после предложения TO.
Необязательное предложение WITH ADMIN OPTION позволяет пользователям, указанным в списке пользователей, назначать роли из списка ролей, указанных в списке ролей, другим пользователям.
При предоставлении прав в базе данных в качестве лица, предоставившего эти права, обычно записывается текущий пользователь. Используя предложение GRANTED BY можно предоставлять права от имени другого пользователя. При использовании оператора REVOKE после GRANTED BY права будут удалены только в том случае, если они были зарегистрированы от удаляющего пользователя. Для облегчения миграции из некоторых других реляционных СУБД нестандартное предложение AS поддерживается как синоним оператора GRANTED BY.
Предложение GRANTED BY может использовать:
- Владелец базы данных;
- SYSDBA;
- Любой пользователь, имеющий права на роль RDB$ADMIN и указавший ее при соединении с базой данных;
- При использовании флага AUTO ADMIN MAPPING — любой администратор операционной системы Windows (при условии использования сервером доверенной авторизации — trusted authentication), даже без указания роли.
Даже владелец роли не может использовать GRANTED BY, если он не находится в вышеупомянутом списке.
Предупреждение: Windows x64
Предупреждение: В версиях FPC ниже FPC 2.7.1 r23738 (март 2013 г.), FPC x64 в Windows не очень хорошо работает с embedded dll Firebird или другими DLL. Раздел ниже содержит обходной путь, если у вас есть старая версия FPC
В версиях FPC ниже 2.7.1 r23738 вы можете получать ошибки/исключения объекта IBConnection, даже если вы пишете правильный код(см., например, Create database bug report.
Обходное решение:
- перейти к моментальному снимку разработки/версии FPC после FPC 2.7.1 r23738; см.
- если на FPC 2.7.1 ниже, чем r23738, скомпилируйте FPC с ключом , чтобы использовать новый код Структурированной Обработки Исключений (SEH) на Win64.
- использовать 32-битную FPC и Lazarus на Windows 64
Доступ к базе данных Firebird из YII2
Из песочницы
Так получилось, что мне понадобилось переносить интерфейс пользователя из связки Delphi + Firebird в WEB. Дабы не останавливать работу комплекса программ, решено было переносить формы постепенно, а для этого необходимо сохранить работу СУБД Firebird и подключаться к ней из web приложения. При разработке web-приложения я решил использовать фреймворк YII2. На этапе разработки мне не нужен полноценный HTTP сервер, вполне сойдет Denwer или XAMMP, или что-то еще. Я выбрал XAMMP т.к. в Денвере давно не обновляется версия PHP, а руками заниматься его обновлением не хочется, идем по пути наименьшего сопротивления. Изначально ни в XAMMP PHP, ни в YII2 нет возможности работать с СУБД Firebird, но при определенных танцах с бубном сделать это вполне реально. Итак, я буду полагать, что у Вас уже установлены: Windows 7 x64, XAMMP и YII2, Firebird 2.5.
Пути установки пакетов у меня (для себя вводите соответствующие корректировки):
- Firebird 2.5 версия x64 (тип сервера значения не имеет) в C:\Program Files\Firebird\Firebird_2_5\
- XAMMP установлен в D:\xampp\
- YII2 установлен в D:\xampp\htdocs\yii\
- БД расположена в пути D:\WORK\database\TBOT.GDB
Теперь можно начинать.
Установка Firebird
1. Диски куда будет устанавливаться FirebirdSQL cервер Firebird и любые базы данных которые вы создаете или к которым подключаетесь должны распологаться на жестком диске, который физически подключен к хост-компьютеру. Вы не можете расположить файлы сервера или любой другой базы данных на mapped drive, filesystem share или сетевой файловой системе.
Вы можете подключиться к базе данных расположенной на CD-ROM (в режиме чтения), но вы не можете запустить с него SQL сервер Firebird и не сможете обновить данные в базе.
2. Установочный скрипт или программа
Несмотря на то, что есть возможность установить Firebird простым копированием файлов, такая как «untarring» файла билда или распаковка .zip-файла, но при первой установке очень рекомендуется использование распространяемого комплекта ПО. Исполняемый файл установки под Windows, RPM-пакет (RedHat Package Manager) под Linux и официальный файл tar.gz для других POSIX-платформ.
2.1. Платформа Windows
На серверных версиях Windows — Windows NT, 2000, ХР и Vista сервис Firebird запустится после завершения установки. После перезагрузки вашего компьютера он запустится автоматически.
Несерверные версии Windows — Windows 95, 98 и ME, не поддерживают сервисы. SQL cервер Firebird будет работать как приложение, защищенное другим приложением известное как Guardian. Если серверное приложение по какой-то причине завершилось неправильно, то Guardian попробует перезапустить его.
Копия клиентской библиотеки — fbclient.dll или gds32.dll будет установлена в системную директорию Windows.
2.2. POSIX-платформы
В любом случае прочитайте release notes относящиеся к той версии Firebird которую вы собираетесь устанавливать. В них могут быть значительные отличия от релиза к релизу любой POSIX-совместимой операционной системы, в особенности относящиеся к категории open source. Где возможно, инженеры создающие билды для каждой версии Firebird, документируют любую известную проблему.
Если в вашем комплекте ПО нет копии release notes, то сходите на download-страницу веб-сайта Firebirdи скачайте копию оттуда.
Проще всего осуществить установку с использованием портов. Если порт под Firebird (InterBase) отсутствует его достаточно просто скачать в Интернете и установить в систему. На примере Freebsd. Заходим в /usr/ports/databases/firebird-server-xx (где хх — версия Firebird (InterBase)) и набираем make install. Все должно установиться. После чего аналогично поступаем с /usr/ports/databases/firebird-clientr-xx. В других Unix-овых системах установка через порты примерно такая же.
Если у вас есть дистрибутив Linux поддерживающий установку из RPM-пакетов, то, если необходимо, прочитайте соответствующую документацию для инструкций по использованию RedHat Package Manager’a. В большинстве дистрибутов у вас есть выбор производить ли установку из командной строки или посредством GUI интерфейса.
Для дистрибутивов не умеющих работать с RPM-пакетами и для ряда UNIX систем, используйте комплект „tar.gz». В release notes вы найдете подробные инструкции по установке.
В комплект включены shell-скрипты. В некоторых случаях, в release notes может быть написано чтобы вы изменили эти скрипты и произвели некоторые корректировки.
Для установки из rpm пакета необходимо выполнить следующую команду:
$rpm -Uvh Firebird.x.x.x.rpm
где Firebird.x.x.x.rpm является именем скачанного инсталляционного пакета.
Для установки с использованием пакета в формате tar.gz необходимо выполнить следующее: $tar -xzf Firebird.x.x.x.tar.gz
$cd install
$./install.sh
Выполнение этих команд приводит к одному и тому же результату — на Linux-машине будет установлен Firebird (InterBase). Вариант с архитектурой SuperServer будет функционировать в виде демона, a Classic — в виде сервиса.
Надо заметить, что приведенный порядок установки годится практически для любой версии Firebird (InterBase). Правда, для различных дистрибутивов Linux могут существовать свои особенности и хитрости при установке, так что лучше посмотреть рекомендации по установке для вашей версии ОС Linux/Unix.
Подсистема «Показатели объектов»
Если вашим пользователям нужно вывести в динамический список разные показатели, которые нельзя напрямую получить из таблиц ссылочных объектов, и вы не хотите изменять структуру справочников или документов — тогда эта подсистема для вас. С помощью нее вы сможете в пользовательском режиме создать свой показатель, который будет рассчитываться по формуле или с помощью запроса. Этот показатель вы сможете вывести в динамический список, как любую другую характеристику объекта. Также можно будет настроить отбор или условное оформление с использованием созданного показателя.
2 стартмани
Firebird что это за программа

Firebird (Firebird SQL) — это программа или реляционная система управления базами данных (СУБД), способная работать на ОС Linux, Microsoft Windows, MacOS X, Solaris Sparc, HP-UX, FreeBSD и других разнообразных Unix платформах. Эта программа Firebird не требует постоянного администрирования. Она основана на исходном коде, который был выпущен корпорацией Borland в 2000 году в качестве Interbase 6.0 (свободной версии). Firebird совместима со стандартом SQL’92.
Что это Firebird?
СУБД Firebird является независимым проектом программистов (C и C++), разработчиков систем управления базами данных и технических советников. Используется в самых разнообразных системах как негосударственного, так и государственного секторов. Основными причинами для перехода являются:
- Оригинальные функции Firebird и простота в использовании. Особенно относится к версии MS SQL 6.5, которая работает с devices (фиксированными устройствами), а не с динамически расширяющимися файлами. Это весомое преимущество, поскольку данный вариант способен привести к определенным проблемам при администрировании.
- Дополнительный сервер и хранилище. MS SQL предлагает, и даже рекомендует, пользователям приобрести еще один дополнительный сервер (операционную систему, оборудование или сервер баз данных), чтобы установить его как хранилище данных для генерации всех отчетов.
- Нет привязки к поставщику ПО. MS SQL работает только на Windows NT2000, а значит, что Вы «привязаны» к ОС Microsoft. А вот эта программа Firebird не имеет привязки к какому-либо поставщику программного обеспечения. Система может работать и на Windows, и на множестве других платформах, включая Linux, MacOS X, Solaris и т.д.
- Открытость исходных кодов. Исходные коды Firebird открыты, что позволяет максимально комфортно использовать эту СУБД, вносить изменения и улучшать, находить ошибки. Если Вы хорошо понимаете исходный код, добавление таких функций и повышение гибкости в системе не составит особого труда.
- Отсутствие стоимости. Известно, что это программа Firebird является совершенно бесплатной системой, в то время как за использование сервера MS SQL взимается плата за каждый процессор, собственно на котором он работает.
Стоит отметить, что сервер Firebird может обработать не одну сотню независимых баз данных, каждая из которых — с большим количеством пользовательских соединений. Для обеспечения резервного копирования останавливать сервер нет необходимости.
Инструкция по удалению Firebird
- Удаление через «Панель управления». Чтобы остановить СУБД FireBird 1.5 через «Панель управления», необходимо открыть окно «FireBird Server Control», запустив FireBird 1.5 Server Manager, и выбрать действие «Stop». Подтвердите, нажав «OK».
- Удаление через «Установку и удаление». Для начала следует открыть «Панель управления», а затем раздел «Установка и удаление программ». В списке выделить программу СУБД FireBird 1.5 и выбрать действие «Удалить» Firebird. Для подтверждения удаления нажать на кнопку «Да». В следующем окне, появившемся после вышеперечисленных действий, выберите «Yes to All» и подтвердите, нажав «ОК». После успешного удаления останется лишь перезагрузить компьютер.
(0 , в среднем: 0 из 5)
Набор подсистем «Умные таблицы»
Данный набор подсистем – прикладная библиотека, призванная помочь программисту 1С быстрее решать ряд типовых задач бизнес-логики, таких как: ведение статусов объектов, отправка почтовых сообщений в определенное время, ведение произвольных таблиц с возможностью редактирования, сохранения и группировки, ориентированные на расчет бюджетных таблиц (план продаж, ретробонусы B2C, проценты по договорам B2B и договорные условия по КАМ), расчет коммерческой политики для бюджетных таблиц, исполнение произвольных алгоритмов с хранением кода в информационной базе, определение рабочих баз, хранение файлов во внешних СУБД (Postgre SQL, MS SQL и MongoDB) и выполнение произвольного кода после изменений ссылочного объекта вне транзакции изменения.
1 стартмани
2009
1.5 (1.5.6 от октября 2009, последний релиз ветки 1.5 (End of series))
Firebird 1.5 выпущен на базе Firebird 1.0, с переводом кода с C на C++
- Восстановлена архитектура Classic для Windows
- создан вариант embedded
- расширен SQL — CASE, COALESCE, NULLIF
- изменено имя базы безопасности (security.fdb) и других модулей — клиента, файла сообщений
- новый файл конфигурации firebird.conf, с новыми параметрами
- передача varchar по сети в «сжатом» виде
- триггеры мульти-действий (insert or update or delete)
- индексы по constraint PK, FK, Unique автоматически принимают имя constraint (если задано)
индексов у таблицы может быть до 256 (раньше было не более 64)
- улучшенная обработка ошибок. Расширенная обработка ошибок в процедурах и триггерах
- разрешается пустой блок BEGIN/END
- новые таблицы символов
- расширения в ISQL
- новые функции в ib_udf и fbudf
- улучшения оптимизатора
Поддерживаемые версии
2.0 (последний релиз 2.0.6)
- ускорена передача данных по сети
- локальный протокол заменен на XNET
- убрана трансляция прав доступа через NetBEUI
- новая политика сборки мусора (см. firebird.conf, GCPolicy)
- Classic поддерживает все функции Services API, идентично SuperServer
- параметр лимита ожидания по блокировкам WAIT
- ускоренный поиск в строках и blob
- исправления обновляемых view
- новые режимы shutdown БД
- новый формат БД — теперь одна таблица может иметь размер больше 36 гигабайт
- новый формат БД — индексируемая строка может быть 1/4 размера страницы (до 4к при размере страницы 16к)
- значительные улучшения оптимизатора
- расширения клиентского API
- новые встроенные строковые функции (lower, trim)
- инкрементальный бэкап (nbackup)
Установка
В Windows встроенный Firebird и обычные клиентские библиотеки Firebird — это разные файлы. Встроенный Firebird всегда может служить обычным клиентом, что делает его логичным выбором для включения в вашу установку.
Windows
Загрузите и разархивируйте комплект embedded Firebird. Убедитесь, что файлы .dll и .manifest находятся либо:
- в каталоге вашего проекта и в каталоге исполняемых файлов (где генерируется .exe), либо
- в каталоге в вашем PATH (не в системном каталоге) (полезно, если вы не хотите сохранять скопированные dll)
Обратите внимание, что битность должна совпадать: вы должны использовать embedded x64 версию, если вы компилируете свою программу под 64-бит, и embedded x32, если вы пишете 32-битные программы. Также убедитесь, что файлы .dlls и .manifest размещены в выходном (исполняемом) каталоге вашего проекта, и распространяйте их вместе с приложениями и файлами лицензий.. Как указание, минимально необходимыми файлами для Firebird 2.5 являются:
Как указание, минимально необходимыми файлами для Firebird 2.5 являются:
- fbembed.dll
- firebird.msg
- ib_util.dll
- icudt30.dll
- icuin30.dll
- icuuc30.dll
- IDPLicense.txt
- IPLicense.txt
- Microsoft.VC80.CRT.manifest
- msvcp80.dll
- msvcr80.dll
Linux
Для Debian, вероятно, похоже на Ubuntu:
получите файлы библиотеки, а также символическую ссылку: например, /usr/lib/x86_64-linux-gnu/libfbembed.so linking для /user/lib/x86_64-linux-gnu/libfbembed.so.bla.x.y
aptitude install libfbembed2.5 firebird-dev
По крайней мере, для Firebird 2.5+: не указывайте имя пользователя или пароль, так как это приведет к поиску security.fdb, что может привести к сбою в случае невозможности доступа к общесистемному security.fdb. Укажите роль RDB$ADMIN в Firebird 2.5+, так как она должна дать вам полный контроль над файлом базы данных.
Поместите эти файлы в каталог вашего проекта (для этого: проверьте, все ли это необходимо):
firebird/libfbembed.so (или возможно libfbembed.so.2.5) firebird.conf firebird/security.fdb #возможно, нет необходимости firebird/intl/fbintl firebird/udf/fbudf.so
Для Firebird 3 вам понадобится:
firebird/libfbclient.so plugins/libEngine12.so
Вам нужно изменить переменную каталога плагинов. Если вы не можете этого сделать, вам нужно поместить libEngine в его оригинальный каталог.
Установите это в firebird.conf (для этого: проверьте, все ли это необходимо)
RootDirectory=./firebird #замените на ваш каталог DatabaseAccess = Full #наверное полезно ExternalFileAccess = Full #наверное полезно UdfAccess = Full #наверное полезно #disable #TempDirectories = /tmp #=> не удалось исправить проблемы блокировки /tmp/firebird #TempDirectories = ~/tmp #=> не удалось исправить проблемы блокировки /tmp/firebird
Перед запуском приложения необходимо установить 2 переменные среды. Предположим, что приложение установлено в /home/pascaldev/embed:
# сообщаем динамическому загрузчику, где найти embedded lib: LD_LIBRARY_PATH=/home/pascaldev/embed/firebird # сообщаем серверу, где искать файлы (сообщения, настройки и т. д.) FIREBIRD=. #или используйте абсолютный путь: /home/pascaldev/embed
Если вы поймали ошибку такую, как
EIBDatabaseError/ : DoInternalConnect : -Can't access lock files' directory /tmp/firebird
возможно, у вас лежат устаревшие файлы блокировки, принадлежащие другому пользователю. Удаление каталога /tmp/firebird работает, но проблема в том, что он будет воссоздан под вашими локальными разрешениями.
macOS
todo: описать это, возможно адаптация Более ранняя версия embedded Firebird на Linux и особенно Firebird Embedded на macOS