Что нужно сделать что бы использовать embedded в Firebird3 ?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
nic1982
новенький
Сообщения: 48
Зарегистрирован: 17.05.2011 16:34:05

Что нужно сделать что бы использовать embedded в Firebird3 ?

Сообщение nic1982 »

Есть приложение которое подключается к сетевой базе данных, вот так:

Код: Выделить всё

ini:= TINIFile.Create('app.ini');

HostDB  := ini.ReadString('Default', 'HostDB'  , '');
PathDB  := ini.ReadString('Default', 'PathDB'  , '');
Login   := ini.ReadString('Default', 'Login'   , '');
Password:= ini.ReadString('Default', 'Password', '');
CodePage:= ini.ReadString('Default', 'CodePage', '');

ini.Free;

IBConnection1.HostName    := HostDB  ;
IBConnection1.DatabaseName:= PathDB  ;
IBConnection1.UserName    := Login   ;
IBConnection1.Password    := Password;
IBConnection1.CharSet     := CodePage;

IBConnection1.Connected:= true;

Содержимое app.ini:

Код: Выделить всё

[Default]
HostDB=192.168.1.1
PathDB=D:\APP\DB.FDB
Login=SYSDBA
Password=masterkey
CodePage=UTF8

В папке с программой лежат: app.exe, app.ini, fbclient.dll, db.fdb
и по сети все работает.

Я в папку с программой дополнительно ложу: engine12.dll, firebird.conf
В firebird.conf правлю строку

Код: Выделить всё

Providers = Engine12

Останавливаю сервер Firebird и при попытке подключится к БД получаю ошибку "unavailable database".

В app.ini параметр HostDB пробовал так HostDB=127.0.0.1 и так HostDB=localhost и пустой отставлял, безрезультатно.

Что я делаю не так?
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

nic1982
Нужно наверное ещё и остальные DLL-ки в каталог с клиентом кинуть, чтобы fbclient смог почувствовать себя сервером. ;-)
nic1982
новенький
Сообщения: 48
Зарегистрирован: 17.05.2011 16:34:05

Сообщение nic1982 »

Vadim писал(а):Нужно наверное ещё и остальные DLL-ки в каталог с клиентом кинуть


Из архива Firebird-3.0.4.33054-0_Win32.zip все DLL-ки в папку с программой кинул не помогло. :(
Архив распаковал (кроме файла firebird.conf) в папку с программой ПОМОГЛО!!!
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

nic1982
Значит и остальные файлы тоже нужны. ;-)
Там уже давно всё одной кучей делают. Для embedded варианта в архиве будет лишний только сам экзешник сервера - firebird.exe и fbguard.exe.
nic1982
новенький
Сообщения: 48
Зарегистрирован: 17.05.2011 16:34:05

Сообщение nic1982 »

Минимум файлов такой:
папка plugins с файлом engine12.dll
firebird.conf (со строкой Providers = Engine12)
fbclient.dll
icudt52.dll
icuin52.dll
icuuc52.dll
icudt52l.dat (интересно что это за файл, без него не чего не работает)

Мне бы хотелось все (pluginsengine12.dll,icudt52.dll,icuin52.dll,icuuc52.dll,icudt52l.dat)
засунуть в папку FirebirdEmbedded, есть ли такая возможность ?

Добавлено спустя 1 минуту 54 секунды:
Re: Что нужно сделать что бы использовать embedded в Firebird3 ?
тут https://www.firebirdsql.org/rlsnotesh/c ... -conf.html
и тут https://habr.com/ru/post/281865/#comment_8860941
сказано что есть параметр RootDirectory я попробовал но у меня не получилось.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

nic1982
Каталог intl - если нужно правильно работать с разными кодировками.
Каталог udf - если нужны дополнительные функции, которые используются в текстах запросов или условиях к запросам. Их описания, что они делают, даны в файлах ib_udf.sql и ib_udf2.sql.
Параметр RootDirectory по-моему не работает. Есть просто параметр root. Можно его попробовать.
Аватара пользователя
zoltanleo
постоялец
Сообщения: 459
Зарегистрирован: 17.10.2013 10:55:01

Сообщение zoltanleo »

nic1982 писал(а):Что я делаю не так?

имхо, более квалифицированные советы ты найдешь здесь, но там тебя справедливо сначала пошлют читать мануалы :)

Если вкратце, в тройке по умолчанию никакие конфиги трогать не надо, если собираешься использовать superserver или embedded. Различие между ними только в строке подключения (для embedded используется только указание локального пути к БД без имени/алиаса сервера и номера порта). Манипуляции со строкой провайдера в firebird.conf влияет только на возможность юзеров подключаться(и в каком приоритете) по тому или иному протоколу (например, оставишь только Remote - и фиг тебе localhost или embedded). Вообщем, читать надо (я тоже, кстати, что-то подзабыл).
olegy123
долгожитель
Сообщения: 1643
Зарегистрирован: 25.02.2016 11:10:20

Сообщение olegy123 »

nic1982 писал(а):icudt52l.dat (интересно что это за файл, без него не чего не работает)

International Components for Unicode
Аватара пользователя
Tango
постоялец
Сообщения: 162
Зарегистрирован: 31.05.2012 17:07:30

Сообщение Tango »

Vadim писал(а):nic1982
Каталог intl - если нужно правильно работать с разными кодировками.
Каталог udf - если нужны дополнительные функции, которые используются в текстах запросов или условиях к запросам. Их описания, что они делают, даны в файлах ib_udf.sql и ib_udf2.sql.
Параметр RootDirectory по-моему не работает. Есть просто параметр root. Можно его попробовать.
Root - нет такого параметра. А RootDirectory и правда чего то не работает.
Ответить