Fehlermeldung beim restore - Funktion F_CHARACTER fehlt

Einsatz von AvERP mit Linux als Server- und/oder Anwendungs-OS

Moderator: SYNERPY

Antworten
beatnik
Beiträge: 3
Registriert: Do Jul 07, 2005 4:43 pm

Fehlermeldung beim restore - Funktion F_CHARACTER fehlt

Beitrag von beatnik »

Hallo zusammen,

bevor ich zu meiner Fehlermeldung komme, werde ich meine Installation genauer darlegen. Der Grund: Ich hatte Firebird erst vor 2 Tagen kennengelernt, und wäre über genauere Informationen zu eine Linux-Installation froh gewesen. Vielleicht sind andere in der gleichen Lage wie ich.

1. Firebird-Server auf einem Linux-Rechner installiert

Vorhanden war ein Debian-Sarge-Rechner. Für diesen habe ich mir die Datei FirebirdSS-1.5.2.4731-0.i686.tar.gz (Firebird Super Server) aus dem Netz gezogen. Das Installationsscript darin hat mir den Server einwandfrei installiert.
Danke für den Tipp aus dem Forum nicht das Debian-Packet 1.5.1 von Sarge zu nehmen.

2. Auf einem Windows-Rechner eine leere AvERP-Datenbank für den Firebird-Server vorbereiten

Als nächstes hatte ich auf meinen WindowsXP Notebook die Komplettinstallation von AvERP mit dem Interbase-Server 6 installiert. Von der Synerpy-Download-Seite die leere AvERP-Datenbank heruntergeladen und auf meinem Notebook ins gleiche Verzeichnis wie die Demodatenbank AvERP.gdb gelegt.

Mit dem Programm IBexpert (Interbase/Firebird-GUI) die leere Datenbank registriert; einzugeben sind dabei dass
- der Server lokal ist
- die Datenbank vom Typ Firebird 1.0 ist (entspricht Interbase 6)
- den Windowspfad zu leeren AvERP-Datenbank
- den Benutzernamen "SYSDBA" und
- das Passwort "masterkey".
Im Anschluss im IBexpert zu der leeren registrierten AvERP-Datenbank konnektiert.

In der darauf erscheinenden Baumübersicht der Datenbank erweiterte ich das Verzeichnis "UDFs". Danach alle Bestandteile darin markiert und im Kontextmenü "Drop UDF" ausgewählt. Damit wurden alle UDF-Verweise gelöscht.
Um diese UDF-Verweise neu aufzufüllen holte ich mir von der Synerpy-Seite die Datei mit der Beschreibung "UDF-Bibliothek (Win32/Linux)" herunter. Diese Datei enthält gepackt 3 Dateien. Die darin enthaltene "GrUDF.so" habe ich gleich beim Firebird-Linux-Server in das Verzeichnis UDF kopiert. Eine weitere Datei von den 3 Stück ist ein Word-Dokument. Das Word-Dokument enthält ein Script-Text, den man markieren und kopieren muss. Das Script kommt nach der Textstelle "Anhang: Vollständiges Script".
Beim konnektierten IBexpert unter "Tools" den "Script Executive" aufgerufen und dort den Script-Text hineinkopiert. Danach noch die Stelle "DECLARE EXTERNAL FUNCTION F_ABS" in dem kopierten Script in "DECLARE EXTERNAL FUNCTION ABS" umgeschrieben > An einer anderen Stelle in diesem Forum wird darauf hingewiesen.
Anschließend das Script vom "Script Executive" ausführen lassen. Damit werden die UDF-Verweise der leeren AvERP-Datenbank wieder aufgefüllt, aber diesmal mit UDFs-Infos, die auf die Datei "GrUDF.so" auf dem Linux-Firebird-Server hinweisen. Vorher hatten die UDF-Verweise auf die Windows-Datei "FreeUDFLib.dll" gelinkt.

Anschließend mit dem IBexpert ein Backup der nun aufbereiteten Datenbank gemacht; das Backup ist unter dem Menüpunkt "Services" zu finden. Die Backup-Datei danach von mein Windows Notebook auf den Linux-Firebird-Server verschoben, - bei mir in das Verzeichnis /opt/firebird; was aber nicht unbedingt wichtig ist, hier ist man relativ frei in der Wahl des Ablageortes.

3. Restore-Versuch der Backup-Datenbank auf dem Linux-Firebird-Server

Mit dem Programm "gbak" - im bin-Verzeichnisses des Firebird-Linux-Servers - versuchte ich das Backup als Firebird-Datenbank wiederherzustellen. Befehl: "gbak -c -v -user sysdba -pas xxxx /opt/firebird/AvERP_leer.gbk /opt/firebird/AvERP.fdb". (xxxx = Passwort das ich mir in der Firebird-Linux-Installation ausgewählt habe)

!!!!!!!!!!!!!!Fehlermeldung!!!!!!!!!!!!!!!!!!!!
Nun kommt mein Problem bzw. meine oben angesagte Fehlermeldung.
Das Restore bricht vor Ende ab und meldet das die Funktion F_CHARACTER fehlt.

Kann mir bitte wer auf die Sprünge helfen! Wo ist den das Fehlerteufelchen versteckt.

Freue mich über Antworten.

Mit freundlichen Grüßen,
Sven
festus01
Beiträge: 515
Registriert: Di Okt 19, 2004 5:45 am
Wohnort: Diepholz

Beitrag von festus01 »

Hallo Sven,

genau das hab ich irgendwann befürchtet, das die freeudflib.dll nicht synchron mit der grudf.so ist.
Als ich vor Monaten SynERPy darauf angesprochen habe, wurde gesagt das keine Functionen angesprochen werden die nicht in der grudf.so vorhanden sind.
Aber genau das ist jetzt eingetreten.

Nun zu Lösung:

Ich habe mir die freeudflibc besorgt und kompiliert. Das Ergebnis in UDF gespeichert und dann die Function F_CHARACTER angemeldet.
Ich weiss nicht mehr genau wo ich die Datei her hatte :?:

Aber ich habe mal in die Lizenzdatei geschaut, bei Bedarf könnte ich Ihnen die komplette freeudflibc-0_6_tar.gz zur Verfügung stellen.
MfG

KDP

----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
beatnik
Beiträge: 3
Registriert: Do Jul 07, 2005 4:43 pm

Anscheinend klappt es jetzt

Beitrag von beatnik »

Hallo festus1,

danke für deinen Hinweis, dadurch hatte ich eine Richtungsvorgabe bei der Lösungssuche.

Ich hatte mir die Datei FreeUDFLibC-0.8.tar.gz aus dem Netz geholt und auf meinem Linux-Firebird-Server kompiliert. Nachdem ich noch den Rest angepasst hatte, führte ich ein Restore durch. Beim Restore kam dann trotzdem noch die Fehlermeldung, dass die Funktion ASCII_VAL fehlt.

Somit ging ich mit der "Vorschlaghammer"-Methode zur Sache. ;) Auf meinem Firebird-Linux-Server liegen im UDF-Verzeichnis nun folgende Dateien:
- GrUDF.so (von Synerpy)
- IB_UDF.so (mit der Firebird-Installation automatisch installiert)
- FreeUDFlibc.so (aus der Datei FreeUDFLibC-0.8.tar.gz kompiliert)

Bei der vorgegeben leeren AvERP-Datenbank habe ich alle UDF-Verweise bis auf ASCII_VAL und ASCII_CHAR gelöscht. Diese beiden linken zu der Datei IB_UDF.so.
Dann das Script aus dem Word-Dokument "GrUDF.doc" von Synerpy wie im ersten Beitrag oben im IBexpert ausgeführt. Die dadurch entstandenen UDF-Verweise linken zu GrUDF.so.
Und zum Schluss nochmal folgendes Script extra ausgeführt:

DECLARE FUNCTION F_CHARACTER
INTEGER
RETURNS CSTRING(254) FREE_IT
ENTRY_POINT 'character' MODULE_NAME 'FreeUDFlibc';

Dieser einzelne Verweis linkt zu FreeUDFlibc.so.

Dass ist zugegeben natürlich nicht sehr schön gelöst, da ich von der FreeUDFlibc.so nur die Funktion "character" brauche. Aber na ja - Festplattenplatz habe ich genug und die Rechnerkapazität reicht auch allemal aus.

Diesmal hat das Restore geklappt, die Benutzung der Datenbank mit dem AvERP Hauptmenü funktioniert auch. Mal sehen ob beim weiteren Arbeiten mit dem Programm noch Fehlermeldungen auftauchen.

Bis demnächst.
Sven
beatnik
Beiträge: 3
Registriert: Do Jul 07, 2005 4:43 pm

Oops - Hab mich verschrieben

Beitrag von beatnik »

Hoppla - bei der o.g. Script fehlt in der ersten Zeile ein Wort; hier sicherheitshalber ein Nachtrag.

...
Declare External Function F_Character
...
Antworten