SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Firebird, HQbird, InterBase » FB3 как правильно использовать embedded? (Подключение из консоли)
- FB3 как правильно использовать embedded? [сообщение #1327] Fri, 13 January 2023 18:16 Переход к следующему сообщению
svd в настоящее время не в онлайне  svd
Сообщений: 49
Зарегистрирован: November 2022
Member
Всем привет.

немогу подключиться по embedded и создать файл базы данных. Использую библиотеку на 32 бита.

Комп под Win10 x64.
Установил FB3.0.7 Win64.
Из консоли набираю
C:\Omnicell_UpdateRDS\Update_working\Programme>Mach4Script.exe  -l C:\Program Files\Firebird\Firebird_3_0\WOW64\fbclient.dll C:\RD\azTFS\Technik\MACH4\DataBase\test_Create.sql                                                              MACH4 IBEScript Version 2022.5.24.1 Copyright (c) 2002-2021 IBExpert Ltd (www.ibexpert.com)                                                                                                                                                  
Executing script: C:\RD\azTFS\Technik\MACH4\DataBase\test_Create.sql
(Line: 13) : Creating database 'C:\Mach4\Database_Empty\MEDIMAT.FDB'... using C:\Program Files\Firebird\Firebird_3_0\WOW64\fbclient.dll... FAILED!

Error in script: C:\RD\azTFS\Technik\MACH4\DataBase\test_Create.sql
Error occurred while executing following statement (line 13):
--------  STATEMENT ----------
CREATE DATABASE 'C:\Mach4\Database_Empty\MEDIMAT.FDB'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 8192
DEFAULT CHARACTER SET ISO8859_1 COLLATION ISO8859_1

--------  ERROR ----------
Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements.
Error occurred during login, please check server firebird.log for details.
-------------------------------------------------------------------------------------------------------------
SQLCODE: -902
SQLSTATE: 08006
GDSCODE: 335545106


Script executed with errors.                                                                                                                                                                                                                 Total execution time: 31ms
скрип небольшой только на создание файла


SET SQL DIALECT 3;


 SET CLIENTLIB  "C:\Program Files\Firebird\Firebird_3_0\WOW64\fbclient.dll";

SET NAMES ISO8859_1;

CREATE DATABASE 'C:\Mach4\Database_Empty\MEDIMAT.FDB'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 8192
DEFAULT CHARACTER SET ISO8859_1 COLLATION ISO8859_1;
В чем неправ?

выкинул из скрипта строчку с set clientlib и получаю ошибку типа

C:\Omnicell_UpdateRDS\Update_working\Programme>Mach4Script.exe  -l C:\Program Files\Firebird\Firebird_3_0\WOW64\fbclient.dll C:\RD\azTFS\Technik\MACH4\DataBase\test_Create.sql                                                              MACH4 IBEScript Version 2022.5.24.1 Copyright (c) 2002-2021 IBExpert Ltd (www.ibexpert.com)                                                                                                                                                  
Executing script: C:\RD\azTFS\Technik\MACH4\DataBase\test_Create.sql
(Line: 13) : Creating database 'C:\Mach4\Database_Empty\MEDIMAT.FDB'... using gds32.dll... FAILED!

Error in script: C:\RD\azTFS\Technik\MACH4\DataBase\test_Create.sql
Error occurred while executing following statement (line 13):
--------  STATEMENT ----------
CREATE DATABASE 'C:\Mach4\Database_Empty\MEDIMAT.FDB'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 8192
DEFAULT CHARACTER SET ISO8859_1 COLLATION ISO8859_1

--------  ERROR ----------
Firebird error.
unknown ISC error 335545106.
----------------------------
SQLCODE: -999
SQLSTATE: HY000
GDSCODE: 335545106


Script executed with errors.                                                                                                                                                                                                                 Total execution time: 94ms

[Обновления: Fri, 13 January 2023 18:20]

Известить модератора

- Re: FB3 как правильно использовать embedded? [сообщение #1328 является ответом на сообщение #1327] Fri, 13 January 2023 18:48 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 889
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
для начала отринь всё лишнее.
пользуй родной isql.exe
а то я лично нихрена не понял чем и как ты пытаешься создать базу.
- Re: FB3 как правильно использовать embedded? [сообщение #1329 является ответом на сообщение #1327] Fri, 13 January 2023 19:22 Переход к предыдущему сообщениюПереход к следующему сообщению
hvlad в настоящее время не в онлайне  hvlad
Сообщений: 364
Зарегистрирован: August 2022
Senior Member
svd
немогу подключиться по embedded и создать файл базы данных. Использую библиотеку на 32 бита.

Комп под Win10 x64.
Установил FB3.0.7 Win64.

Ничего не смущает ?
- Re: FB3 как правильно использовать embedded? [сообщение #1334 является ответом на сообщение #1329] Sat, 14 January 2023 00:45 Переход к предыдущему сообщениюПереход к следующему сообщению
svd в настоящее время не в онлайне  svd
Сообщений: 49
Зарегистрирован: November 2022
Member
Смущает то, что забыл добавить, что выполнение скрипта ведётся чере ibescript. А он могет только с х32.

Mach4script.exe это локализованная версия ibescript.exe от производителя.

[Обновления: Sat, 14 January 2023 00:49]

Известить модератора

- Re: FB3 как правильно использовать embedded? [сообщение #1335 является ответом на сообщение #1334] Sat, 14 January 2023 00:51 Переход к предыдущему сообщениюПереход к следующему сообщению
hvlad в настоящее время не в онлайне  hvlad
Сообщений: 364
Зарегистрирован: August 2022
Senior Member
svd
Смущает то, что забыл добавить, что выполнение скрипта ведётся чере ibescript. А он могет только с х32.
Ну так и ставить нужно 32-bit embedded.
- Re: FB3 как правильно использовать embedded? [сообщение #1337 является ответом на сообщение #1335] Sat, 14 January 2023 14:49 Переход к предыдущему сообщениюПереход к следующему сообщению
svd в настоящее время не в онлайне  svd
Сообщений: 49
Зарегистрирован: November 2022
Member
Ну вроде как в 3.0 нет отдельно embedded и обычный fbclient.dll несет возможности embedded.
Я и использую WOW64\fbclient.dll - 32разрядную библиотеку для этих манипуляций. Или там лежащая библиотека такого не умеет и необходимо уставливать Firebird3.0 for Win32 и его библиотека сможет так работать?
- Re: FB3 как правильно использовать embedded? [сообщение #1338 является ответом на сообщение #1337] Sat, 14 January 2023 15:54 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 418
Зарегистрирован: August 2022
Senior Member
А включить мозг и подумать, что ВСЕ загружаемые в процесс DLL должны иметь одну и ту же разрядность?.. Включая те, что в папках intl и plugins.
- Re: FB3 как правильно использовать embedded? [сообщение #1339 является ответом на сообщение #1338] Sat, 14 January 2023 18:34 Переход к предыдущему сообщениюПереход к следующему сообщению
svd в настоящее время не в онлайне  svd
Сообщений: 49
Зарегистрирован: November 2022
Member
Спасибо.
- Re: FB3 как правильно использовать embedded? [сообщение #1395 является ответом на сообщение #1337] Thu, 19 January 2023 16:04 Переход к предыдущему сообщениюПереход к следующему сообщению
kdv в настоящее время не в онлайне  kdv
Сообщений: 98
Зарегистрирован: June 2022
Member
svd писал(а) Sat, 14 January 2023 14:49
Ну вроде как в 3.0 нет отдельно embedded и обычный fbclient.dll несет возможности embedded.
НЕТ. fbclient.dll это в 3.0 только клиентская библиотека. Если коннект локальный, то она пытается найти engine12.dll, и вот это уже тогда будет embedded - т.е. сервер внутри dll, загружаемых каким-то exe.
Про соответствие разрядности уже написали.
- Re: FB3 как правильно использовать embedded? [сообщение #1397 является ответом на сообщение #1395] Thu, 19 January 2023 16:48 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 889
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
kdv
. fbclient.dll это в 3.0 только клиентская библиотека. Если коннект локальный, то она пытается найти engine12.dll, и вот это уже тогда будет embedded - т.е. сервер внутри dll, загружаемых каким-то exe.
Про соответствие разрядности уже написали.
наверное пора заводить FAQ
- Re: FB3 как правильно использовать embedded? [сообщение #1407 является ответом на сообщение #1397] Fri, 20 January 2023 13:32 Переход к предыдущему сообщениюПереход к следующему сообщению
kdv в настоящее время не в онлайне  kdv
Сообщений: 98
Зарегистрирован: June 2022
Member
МП писал(а) Thu, 19 January 2023 16:48

наверное пора заводить FAQ
я статью про эмбеддед всё никак не допишу, уже третий год... Хотя, наверное, пора выкладывать. А допиливать уже по комментариям.

короче, вот
https://www.ibase.ru/files/firebird/embedded.pdf

[Обновления: Fri, 20 January 2023 13:47]

Известить модератора

- Re: FB3 как правильно использовать embedded? [сообщение #1423 является ответом на сообщение #1407] Fri, 20 January 2023 22:16 Переход к предыдущему сообщениюПереход к следующему сообщению
Док в настоящее время не в онлайне  Док
Сообщений: 101
Зарегистрирован: June 2022
Senior Member
В мемориз! ©

FPC/Lazarus (trunk) | Win10 x64 Ultim/Debian 11 amd64/Darwin x86_64 Monterey | Firebird 3.0.10 x64 | IBX by TonyWhyman

https://zoltanleo.blogspot.com/
- Re: FB3 как правильно использовать embedded? [сообщение #1425 является ответом на сообщение #1423] Fri, 20 January 2023 23:00 Переход к предыдущему сообщениюПереход к следующему сообщению
kdv в настоящее время не в онлайне  kdv
Сообщений: 98
Зарегистрирован: June 2022
Member
ну давайте. я мучился, никак со структурой определиться не мог, было несколько вариантов, оставил тот что есть сейчас. Я еще сам пересмотрю, где-то мутно написано. Сегодня даже пару фраз поменял, но надо будет попристальнее вычитать.
- Re: FB3 как правильно использовать embedded? [сообщение #1427 является ответом на сообщение #1425] Sat, 21 January 2023 14:08 Переход к предыдущему сообщениюПереход к следующему сообщению
sim_84 в настоящее время не в онлайне  sim_84
Сообщений: 332
Зарегистрирован: June 2022
Senior Member
Надо бы добавить какие еще файлы могут использоваться в 4.0. Там далеко не только fbclent и engineXX
- Re: FB3 как правильно использовать embedded? [сообщение #1428 является ответом на сообщение #1427] Sat, 21 January 2023 15:49 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 418
Зарегистрирован: August 2022
Senior Member
Зачем? Достаточно написать "распаковываете zip-архив как есть".
- Re: FB3 как правильно использовать embedded? [сообщение #1429 является ответом на сообщение #1427] Sat, 21 January 2023 17:10 Переход к предыдущему сообщениюПереход к следующему сообщению
ggreggory в настоящее время не в онлайне  ggreggory
Сообщений: 77
Зарегистрирован: July 2022
Member
По поводу работы с пользователями ничего не сказано.

И структуру каталогов для наглядности бы всё-таки надо. Плюс описать возможность релокации с помощью RootDirectory в firebird.conf.
- Re: FB3 как правильно использовать embedded? [сообщение #1430 является ответом на сообщение #1429] Sat, 21 January 2023 17:22 Переход к предыдущему сообщениюПереход к следующему сообщению
sim_84 в настоящее время не в онлайне  sim_84
Сообщений: 332
Зарегистрирован: June 2022
Senior Member
В ембедед нет пользователей.
- Re: FB3 как правильно использовать embedded? [сообщение #1431 является ответом на сообщение #1429] Sat, 21 January 2023 17:33 Переход к предыдущему сообщениюПереход к следующему сообщению
basid в настоящее время не в онлайне  basid
Сообщений: 167
Зарегистрирован: June 2022
Географическое положение: Asia/Irkutsk
Senior Member
ggreggory писал(а) Sat, 21 January 2023 22:10
Плюс описать возможность релокации с помощью RootDirectory в firebird.conf.
С разморозкой.
- Re: FB3 как правильно использовать embedded? [сообщение #1434 является ответом на сообщение #1431] Sat, 21 January 2023 23:59 Переход к предыдущему сообщениюПереход к следующему сообщению
ggreggory в настоящее время не в онлайне  ggreggory
Сообщений: 77
Зарегистрирован: July 2022
Member
sim_84 писал(а) Sat, 21 January 2023 17:22
В ембедед нет пользователей.
Ну вот это и надо отразить в документации. Иначе возникают вопросы.

basid писал(а) Sat, 21 January 2023 17:33
ggreggory писал(а) Sat, 21 January 2023 22:10
Плюс описать возможность релокации с помощью RootDirectory в firebird.conf.
С разморозкой.
Ну а в этом readme его рекомендуют использовать для этих целей:

https://github.com/FirebirdSQL/firebird/blob/master/doc/READ ME.user.embedded

И это - рабочий вариант.
- Re: FB3 как правильно использовать embedded? [сообщение #1436 является ответом на сообщение #1434] Sun, 22 January 2023 12:19 Переход к предыдущему сообщениюПереход к следующему сообщению
shavluk в настоящее время не в онлайне  shavluk
Сообщений: 82
Зарегистрирован: June 2022
Географическое положение: Одеса
Member
У себя вопрос с местонахождением клиента firebird решаю следующим образом:
1. Database.LibraryName прописываю полный путь к fbclient.dll. В моем случае осуществляется поиск, настроено в моем .ini-файле
2. Устанавливаю переменные окружения "FIREBIRD" и "FIREBIRD_MSG" (через SetEnvironmentVariable). Это папка где находится fbclient.dll

Более ничего не надо настраивать
- Re: FB3 как правильно использовать embedded? [сообщение #1440 является ответом на сообщение #1436] Sun, 22 January 2023 19:23 Переход к предыдущему сообщениюПереход к следующему сообщению
Док в настоящее время не в онлайне  Док
Сообщений: 101
Зарегистрирован: June 2022
Senior Member
shavluk писал(а) Sun, 22 January 2023 12:19
У себя вопрос с местонахождением клиента firebird решаю следующим образом:
1. Database.LibraryName прописываю полный путь к fbclient.dll. В моем случае осуществляется поиск, настроено в моем .ini-файле
2. Устанавливаю переменные окружения "FIREBIRD" и "FIREBIRD_MSG" (через SetEnvironmentVariable). Это папка где находится fbclient.dll

Более ничего не надо настраивать
Жень, это для эмбедедд? о_О

А если не эмбедедд, но серверов несколько?


FPC/Lazarus (trunk) | Win10 x64 Ultim/Debian 11 amd64/Darwin x86_64 Monterey | Firebird 3.0.10 x64 | IBX by TonyWhyman

https://zoltanleo.blogspot.com/
- Re: FB3 как правильно использовать embedded? [сообщение #1441 является ответом на сообщение #1440] Sun, 22 January 2023 19:52 Переход к предыдущему сообщениюПереход к следующему сообщению
shavluk в настоящее время не в онлайне  shavluk
Сообщений: 82
Зарегистрирован: June 2022
Географическое положение: Одеса
Member
Да, эмбедедд в первую очередь.
У меня настройки клиента вообще не отличаются дла вариантов эмбедедд/сетевой.
Не хочу зависеть от уже остановленньіх чужих программ.
У меня все вариантьі установки "портабельньіе".

fbclient\
project.exe
project.conf

В .conf-файле есть 2 главные настройки: путь к fbclient.dll и путь к БД
Но если не установить переменньіе окружения возникают проблемы с поиском firebird.msg

upd. Переменньіе окружения устанавливаются не для системьі целиком, а только внутри конкретного приложения. И не влияют ни на что прочее
upd2. Если серверов несколько (или версий серверов), то ставим в качестве клиента максимальную версию и подключаемся через него ко всем прочим серверам

[Обновления: Sun, 22 January 2023 19:57]

Известить модератора

- Re: FB3 как правильно использовать embedded? [сообщение #1442 является ответом на сообщение #1441] Sun, 22 January 2023 21:48 Переход к предыдущему сообщениюПереход к следующему сообщению
kdv в настоящее время не в онлайне  kdv
Сообщений: 98
Зарегистрирован: June 2022
Member
чтобы "не зависеть от настроек чужих программ", не надо распихивать свою приладу и embedded по разным папкам. Это для чего? Чтобы при двух разных приложениях использовать один embedded? Экономия ни о чем.
А несчастный пользователь, скопировав только папку с вашим приложением на другой комп, получит неработающее.
(поправлюсь - если embedded в "подпапке", то всё будет ок, кроме упомянутых "переменных окружения. В итоге ваше приложение "непортабельное"),

p.s. чужим приложениям ваш embedded до лампочки, будь он хоть в отдельной папке.

[Обновления: Sun, 22 January 2023 21:50]

Известить модератора

- Re: FB3 как правильно использовать embedded? [сообщение #1443 является ответом на сообщение #1429] Sun, 22 January 2023 21:53 Переход к предыдущему сообщениюПереход к следующему сообщению
kdv в настоящее время не в онлайне  kdv
Сообщений: 98
Зарегистрирован: June 2022
Member
ggreggory писал(а) Sat, 21 January 2023 17:10
И структуру каталогов для наглядности бы всё-таки надо.
то есть, существуют некие сомнения по поводу необходимости для работы Firebird подпапок
doc, examples, help, include, lib и misc?

[Обновления: Sun, 22 January 2023 21:53]

Известить модератора

- Re: FB3 как правильно использовать embedded? [сообщение #1448 является ответом на сообщение #1442] Mon, 23 January 2023 12:10 Переход к предыдущему сообщениюПереход к следующему сообщению
shavluk в настоящее время не в онлайне  shavluk
Сообщений: 82
Зарегистрирован: June 2022
Географическое положение: Одеса
Member
У меня клиент находится во вложенной папке, рядом с exe
"Несчастный пользователь" скопирует только папку с программой и получит рабочего клиента без киких-либо дополнительных действий
Путь к папке fbclient у меня относительный

По поводу перемных окружения вы говорите глупости. Как минимум из-за наличия функций ExpandFileName
- Re: FB3 как правильно использовать embedded? [сообщение #1449 является ответом на сообщение #1448] Mon, 23 January 2023 12:12 Переход к предыдущему сообщениюПереход к следующему сообщению
shavluk в настоящее время не в онлайне  shavluk
Сообщений: 82
Зарегистрирован: June 2022
Географическое положение: Одеса
Member
fb_lib := MainIniFile.ReadString('SYSTEM', 'firebird', '');
if fb_lib <> '' then
begin
  fb_lib := ExpandFileName(fb_lib);
  SetGlobalEnvironment('FIREBIRD', fb_lib);
end else
  fb_lib := GetFirebirdPath;

if not DirExists(fb_lib) then
  fb_lib := ''
else
  AddDllDirectory(fb_lib);

SetGlobalEnvironment('FIREBIRD_MSG', GetGlobalEnvironment('FIREBIRD'));

[Обновления: Mon, 23 January 2023 12:13]

Известить модератора

- Re: FB3 как правильно использовать embedded? [сообщение #1456 является ответом на сообщение #1449] Mon, 23 January 2023 21:32 Переход к предыдущему сообщениюПереход к следующему сообщению
kdv в настоящее время не в онлайне  kdv
Сообщений: 98
Зарегистрирован: June 2022
Member
так-то норм, но вот SetGlobalEnvironment - запорет расположение firebird.msg для других программ на ФБ, установленных на клиенте. Может, всё-таки лучше firebird.msg положить прям рядом с exe приложения?
- Re: FB3 как правильно использовать embedded? [сообщение #1457 является ответом на сообщение #1456] Mon, 23 January 2023 22:34 Переход к предыдущему сообщению
shavluk в настоящее время не в онлайне  shavluk
Сообщений: 82
Зарегистрирован: June 2022
Географическое положение: Одеса
Member
Да, название процедуры немного неудачное. По умолчанию вызывается SetEnvironmentVariable (только текущий процесс)

Цитата:
. The SetEnvironmentVariable function sets the value of an environment variable for the current process.
автоматическая буквица в цитате выбешивает

function SetGlobalEnvironment(const Name, Value: string; const Local: Boolean = True;
  const User: Boolean = True): Boolean;
resourcestring
  REG_MACHINE_LOCATION = 'System\CurrentControlSet\Control\Session Manager\Environment';
  REG_USER_LOCATION = 'Environment';
begin
  Result := Local;
  SetEnvironmentVariable(PChar(Name), PChar(Value));
  if not Result then
  with TRegistry.Create do
  try
    if User then { User Environment Variable }
      Result := OpenKey(REG_USER_LOCATION, True)
    else { System Environment Variable }
    begin
      RootKey := HKEY_LOCAL_MACHINE;
      Result  := OpenKey(REG_MACHINE_LOCATION, True);
    end;
    if Result then
    begin
      WriteString(Name, Value); { Write Registry for Global Environment }
      { Update Current Process Environment Variable }
      SetEnvironmentVariable(PChar(Name), PChar(Value));
      { Send Message To All Top Window for Refresh }
      SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, Integer(PChar('Environment')));
    end;
  finally
    Free;
  end;
end;

[Обновления: Mon, 23 January 2023 22:37]

Известить модератора

Предыдущая тема: UDR для разбора XML
Следующая тема: Причудливая сортировка по условию (больше 300 условий в запросе)
Переход к форуму:
  


Текущее время: Tue Dec 31 00:08:41 GMT+3 2024

Общее время, затраченное на создание страницы: 0.01313 секунд