Einzelnen Beitrag anzeigen

hanvas

Registriert seit: 28. Okt 2010
171 Beiträge
 
Delphi 11 Alexandria
 
#1

Firebase UDF in Embedded/UDR not found

  Alt 13. Mär 2025, 15:19
Datenbank: Firebird • Version: 4/5 • Zugriff über: Firedac/Embedded
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

Geändert von hanvas (13. Mär 2025 um 15:34 Uhr)
  Mit Zitat antworten Zitat