Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Firebase UDF in Embedded/UDR not found (https://www.delphipraxis.net/216858-firebase-udf-embedded-udr-not-found.html)

hanvas 13. Mär 2025 14:19

Datenbank: Firebird • Version: 4/5 • Zugriff über: Firedac/Embedded

Firebase UDF in Embedded/UDR not found
 
Hallo,

ich würde gerne die Lucene Fulltext UDF (64Bit) von IBSurgeon in einer Firebird Embedded installation verwenden. Ich bekomme immer wieder den Fehler [FireDac][Phys][FB]External UDR Engine not found.

Wenn ich Firebird "normal" also nicht embedded verwende ist alles ok. Die UDF ist aber auch embedded korrekt im plugins/udf ordner installiert. Um genau zu sein, mittlerweile sind alle notwendigen DLLs im Applikationsordner, im lokalen Firebird Ordner in Plugins und in Plugins/UDF installiert. Also daran das eine DLL nicht gefunden wird kann es eigentlich nicht liegen. Auch die "neuesten" Redistributables von MS sind sowohl für Visual Studio 2019 wie auch für 2022 installiert.

Die Connection erzeuge ich mittels (Aurelius)

Code:

function TAppManager.CreateConnection : IDBConnection;
begin
 if not Assigned(FConnection) then
  begin
    if not Assigned(FLink) then
     begin
      FLink := TFDPhysFBDriverLink.Create(nil);
      FLink.VendorHome := ExtractFileDir(FBClientDLL_Path);
      FLink.VendorLib := ExtractFilename(FBClientDLL_Path);
      FLink.Embedded  := Embedded;
     end;
    if not Assigned(FDConnection) then
       FDConnection := TFDConnection.Create(self);
    FDConnection.DriverName     := 'FB';
    if Embedded then
     begin
       FDConnection.Params.Values['Server'] := '';
       FDConnection.Params.Values['Protocol'] := 'Local';
       FDConnection.Params.Values['Database'] := DBName;
     end
    else
     begin
      FDConnection.Params.Database := DBName;
      if (UserName<>'') then
        FDConnection.Params.UserName := UserName;
      if (Passwort<>'') then
        FDConnection.Params.Password := Passwort;
     end;
    FConnection :=
       TFireDacConnectionAdapter.Create(FDConnection, 'Firebird', False);
  end ;
  result := FConnection;
end;

function TAppManager.CreateFullText : Boolean;
var p : String;
    script : TFDScript ;
begin
  CreateConnection;

  result := True;
  p := ExtractFilePath(ParamStr(0));
  if FileExists(p + 'fts$install.sql') then
   begin
    script := TFDScript.Create(self);
    try
     script.Connection := FDConnection;
     script.SQLScriptFileName := p + 'fts$install.sql';
     result := script.ValidateAll and
               script.ExecuteAll;
    finally
      script.Free;
    end;
   end;
end;

[1] https://firebirdsql.org/en/full-text-search-udr/
[2] https://github.com/IBSurgeon/lucene_udr

mkinzler 13. Mär 2025 15:05

AW: Firebase UDF in Embedded/UDR not found
 
Ist die udr in der Konfig aktiviert?

hanvas 13. Mär 2025 15:26

AW: Firebase UDF in Embedded/UDR not found
 
Zitat:

Zitat von hanvas (Beitrag 1547070)
Hallo,

Also daran das eine DLL nicht gefunden wird kann es eigentlich nicht liegen.

Und doch lag es daran. Zwar habe ich alle DLL-Dateien von Firebird im Laufe meiner Tests in alle möglichen Verzeichnisse kopiert, aber nicht alle Dateien aus plugins/udr, ich habe mich einfach auf die Doku verlassen das das durch entpacken in plugins/udr installiert wird. Nachdem ich jetzt auch noch alle Dateien aus plugins/udr nach plugins kopiert habe funktioniert es. So kann ich das natürlich nicht lassen. Also werde ich mich in einer frischen Installation nochmal dranmachen und dann Datei für Datei prüfen wo der Fehler ist. Das Ergebnis poste ich hier. Kann aber ein paar Tage dauern.

cu Hans Joerg

shebang 13. Mär 2025 15:50

AW: Firebase UDF in Embedded/UDR not found
 
Zitat:

Zitat von hanvas (Beitrag 1547079)
Also werde ich mich in einer frischen Installation nochmal dranmachen und dann Datei für Datei prüfen wo der Fehler ist.

Mach dir die Arbeit etwas leichter und verwende den ProcessMonitor, der zeigt dir genau an, welche DLLs geladen werden.

hanvas 13. Mär 2025 21:54

AW: Firebase UDF in Embedded/UDR not found
 
Zitat:

Mach dir die Arbeit etwas leichter und verwende den ProcessMonitor, der zeigt dir genau an, welche DLLs geladen werden.
Kenn ich eigentlich schon, trotzdem neige ich öfter dazu nicht die effizienteste Methode :oops: zu verwenden, dann ist so ein Hinweis, Gold wert.

Danke an alle

cu Ha-Joe


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz