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

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

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

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

Сообщение nic1982 » 25.09.2019 11:00:30

Есть приложение которое подключается к сетевой базе данных, вот так:
Код: Выделить всё
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 и пустой отставлял, безрезультатно.

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

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

Сообщение Vadim » 25.09.2019 11:42:33

nic1982
Нужно наверное ещё и остальные DLL-ки в каталог с клиентом кинуть, чтобы fbclient смог почувствовать себя сервером. ;-)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

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

Сообщение nic1982 » 25.09.2019 11:56:44

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


Из архива Firebird-3.0.4.33054-0_Win32.zip все DLL-ки в папку с программой кинул не помогло. :(
Архив распаковал (кроме файла firebird.conf) в папку с программой ПОМОГЛО!!!
nic1982
новенький
 
Сообщения: 48
Зарегистрирован: 17.05.2011 16:34:05

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

Сообщение Vadim » 25.09.2019 12:00:59

nic1982
Значит и остальные файлы тоже нужны. ;-)
Там уже давно всё одной кучей делают. Для embedded варианта в архиве будет лишний только сам экзешник сервера - firebird.exe и fbguard.exe.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

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

Сообщение nic1982 » 25.09.2019 13:11:09

Минимум файлов такой:
папка 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 я попробовал но у меня не получилось.
nic1982
новенький
 
Сообщения: 48
Зарегистрирован: 17.05.2011 16:34:05

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

Сообщение Vadim » 25.09.2019 13:24:25

nic1982
Каталог intl - если нужно правильно работать с разными кодировками.
Каталог udf - если нужны дополнительные функции, которые используются в текстах запросов или условиях к запросам. Их описания, что они делают, даны в файлах ib_udf.sql и ib_udf2.sql.
Параметр RootDirectory по-моему не работает. Есть просто параметр root. Можно его попробовать.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

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

Сообщение zoltanleo » 25.09.2019 20:46:21

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

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

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

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

Сообщение olegy123 » 25.09.2019 23:35:28

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

International Components for Unicode
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

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

Сообщение Tango » 08.12.2023 14:32:18

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


Root - нет такого параметра. А RootDirectory и правда чего то не работает.
Аватара пользователя
Tango
постоялец
 
Сообщения: 156
Зарегистрирован: 31.05.2012 17:07:30


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28

Рейтинг@Mail.ru