GELÖST LibreOffice Base mit int. & ext. HSQL-DB unter Linux!

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

GELÖST LibreOffice Base mit int. & ext. HSQL-DB unter Linux!

Beitrag von herz4 »

Ich möchte LibreOffice Base (ver. 3.5) unter Linux Mint 13 sowohl mit interner (ver. 1.8.) als auch externer (ver. 2.3.) HSQL-Datenbank nutzen, jeweils in Abhängigkeit von der Datenbank (vgl. http://forum.openoffice.org/en/forum/vi ... 40&t=61155 oder http://forum.openoffice.org/en/forum/vi ... 83&t=61183 ).

Ich nutze derzeit OpenOffice Base (ver. 3.3.0) unter Win XP Prof SP3 sowohl mit interner als auch externer HSQL-Datenbank nach obigen Beschreibungen, funzt prima, kann ich empfehlen.

Meine bisherigen Versuche, dieses unter Linux wie vor zum Laufen zu bringen, scheiterten.

Die Zuweisung im Startmakro ( ThisDatabaseComponent.DataSource.Settings.JavaDriverClassPath = "file:///home/.../hsqldb.jar" ) funzt noch.

Wenn ich dann aber Tabellen aufrufe kommt die Fehlermeldung, dass keine Verbindung zur (externen) Datenbank hergestellt werden konnte. Wenn ich die Zuweisung prüfe, wird der Pfad exakt angegeben, die Datei ist auch da, was von dem Makro auch geprüft wurde.

Gebe ich die so zugewiesen hsqldb.jar manuell unter Extras>Optionen>Java>Class Path ...>Archive hinzufügen an, wird ordentlich verbunden; dann aber nicht mehr zu internen HSQLDBs, deswegen ja der Aufwand mit Makrozuweisung.

(Lasse ich jegliche ClassPath-Zuweisung weg, dann lassen sich also interne DBs öffnen, dann wird mir
bei MsgBox ThisDatabaseComponent.DataSource.Settings.JavaDriverClassPath [Leer] - nichts - ausgegeben. Dann kann ich auch auf externe - nur 1.8(!)-HSQLDBs - zugreifen!)

Es macht mir den Eindruck, als würde die Zuweisung ThisDatabaseComponent.DataSource.Settings.JavaDriverClassPath = "file:///home/.../hsqldb.jar" im Startmakro richtig vorgenommen aber trotzdem beim Zugriff auf die jeweilige Datenbank doch die interne hsqldb.jar benutzt werden, also die zugewiesene gar nicht berücksichtigt.

Kennt jemand das Problem - bestenfalls seine Lösung? :o
Zuletzt geändert von herz4 am Sa, 19.07.2014 14:45, insgesamt 2-mal geändert.
RobertG
********
Beiträge: 2068
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: LibreOffice Base mit int. & ext. HSQL-DB unter Linux nut

Beitrag von RobertG »

Hallo herz4,

ich kannte den Makroansatz nicht, will den jetzt auch nicht eben schnell unter Linux durchtesten. Standardmäßig ist es zur Zeit aber nicht möglich, die interne und die externe Verbindung gleichzeitig in unterschiedlichen Versionen zu nutzen. https://bugs.freedesktop.org/show_bug.cgi?id=34411
Ich habe das vor kurzem noch einmal mit der neuesten HSQLDB versucht. Ich habe die hsqldb.jar - Datei im Classpath aufgerufen und eine interne Datenbank (von der ich ein Backup hatte) aufgerufen, ein paar Daten eingegeben und wieder geschlossen. Danach war das Öffnen der Datenbank wegen einer Versionsänderung nicht mehr möglich. In dem Unterordner database gab es eine neue properties-Datei, die Einstellungen der externen hsqldb-Datenbank geschrieben hatte. Außerdem war die gesamte script-Datei mit Einträgen versehen, die für die Version HSQLDB 1.8 nicht lesbar waren.

Du musst also die Pfadzuweisung für eine externe HSQLDB Datenbank mit einem Makro beim Öffnen der jeweiligen Datenbank vollziehen. Nicht global, da Du Dir ansonsten die internen Datenbanken unbrauchbar machst.

Gruß

Robert
Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: LibreOffice Base mit int. & ext. HSQL-DB unter Linux nut

Beitrag von herz4 »

Danke, Robert, für die schnelle Meldung. Also ich habe jetzt noch nicht meine spärlichen Englischkenntnisse verwandt um den beschriebenen Bug Deines Links zu verstehen.
Nur so viel: unter win xp ist das Problem durch die in meinen Links beschriebenen Makros gelöst. Ich kann dort tatsächlich in einer Instanz von Base eine interne DB öffenen und noch während die geöffnet ist in einer weiteren eine externe mit einem weiteren - abweichenden - Java-HSQLDB-Treiber, so z. B. auch den neuesten 2.3. Das funzt supi!

Nun will ich aber langsam auf ein freies und weniger "beobachtetes" Betriebssystem umsteigen mit freier Software. Da fiel mir nichts besseres ein als eben Linux mit Office-Paket. Die Distribution, die ich nahm, liefert mir den von mir gewünschten "Luxus" nicht gratis - ich muss "feintunen" und bin als Neuer überfordert.

Im verlinkten, englischspachigen Forum scheint es mir, als ob die sehr passable Lösung von DACM, Sliderule, Villeroy etc. gerade auch auf Linux-Stationen läuft. Mir fällt es nur mit meinem schwachen Schulenglisch schwer, die komplizierte Chose dort zu beschreiben ...

So hoffe ich in den nächsten Tagen noch auf Hilfe hier ..., schönen Abend.
Zuletzt geändert von herz4 am Mo, 26.08.2013 09:30, insgesamt 1-mal geändert.
RobertG
********
Beiträge: 2068
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: LibreOffice Base mit int. & ext. HSQL-DB unter Linux nut

Beitrag von RobertG »

hallo herz4,

ich habe das jetzt doch einmal durchgetestet. Da ich keine exteren Datenbank bisher hatte, habe ich eben schnell eine interne erstellt, hierin eine Tabelle ohne Inhalt und dann nach der Beschreibung im Handbuch in eine externe Datenbank umgewandelt. Dazu habe ich zuerst einmal den externen jar-file in den class-path eingebunden. Der Kontakt zur externen Datenbank klappte. Anschließend den jar-file wieder aus dem Pfad raus genommen. Ich habe einen Datensatz eingegeben und anschließend das Makro aus Deiner Quelle übernommen und etwas angepasst.

Code: Alles auswählen

Sub Start
	Const cPath = "/home/robby/public_html/hsqldb_test/hsqldb.jar"
	DIM oDataSource AS OBJECT
	DIM oSettings AS OBJECT
	DIM sURL AS STRING
	sURL = ConvertToURL(cPath)
	oDataSource = ThisComponent.DataSource
	oSettings = oDataSource.Settings
	oSettings.JavaDriverClassPath = sURL
End Sub
Ich musste das etwas durchformatieren, da das einfach kopierte Makro einen Error bei der Zeile oDataSource auswarf - irgendein nicht lesbares Zeichen, das störte. Nachdem ich dort schon einmal die Tabulatoren neu gesetzt habe, habe ich auch gleich die Variablen umgeschrieben.
Bei meinem Rechner liegt der Pfad in meinem Verzeichnis (/home/robby) und dort weiter im Verzeichnis public_html/hsqldb_test.
Dann habe ich das Makro bei geöffneter Datenbankdatei gestartet und konnte auf die Tabelle zugreifen.
Das Makro habe ich anschließend bei
Extras → Anpassen → Ereignisse → Laden des Dokuments beendet
starten lassen.
Klappte auch.
Und jetzt den Nageltest mit einer neuen internen Datenbank. Die konnte ich erstellen. Ich konnte auch Daten eingeben. Ich konnte sie auch schließen und wieder öffnen, auch direkt nacheinander, ohne dass es irgendwelche Einflüsse gab, die plötzlich für Fehler sorgten.
Beide Datenbanken habe ich noch an einer anderen LO-Version durchlaufen lassen - keine Probleme.
Fazit: Es geht ohne weiteres, die interne Datenbank laufen zu lassen und extern mit einer völlig anderen hsqldb.jar eine andere Datenbank laufen zu lassen. Nur gewusst wie.
Jetzt musst Du allerdings immer noch suchen, warum das bei Dir nicht so hin haut.

Gruß

Robert
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: LibreOffice Base mit int. & ext. HSQL-DB unter Linux nut

Beitrag von F3K Total »

Hallo zusammen,
Ich kann Roberts Erkenntnisse nur bestätigen. Auch ich habe interne 1.8er parallel zu externen 2.3 ern laufen.
Ein globaler Classpath (Extras/Optionen...Java) darf nicht eingetragen sein. Mit Villeroys FreeHSQLDB-0.2.1.oxt Extension kann man die Verbindung zur 2.3er hsqldb.jar leicht setzen.
EDIT: Gerade habe ich es auch unter Linux ausprobiert. Wenn ich FreeHSQLDB-0.2.1.oxt verwende, darf ich die Extension unter Linux Mint nur für mich und nicht für alle User installieren, denn der Classpath wird in der Extension in der Basic-Library gespeichert, und es gibt eine Fehlermeldung wenn man dort keine Schreibrechte hat, was bei einer Installation für alle User der Fall ist.
RobertG hat geschrieben:Das Makro habe ich anschließend bei
Extras → Anpassen → Ereignisse → Laden des Dokuments beendet
starten lassen.
Das ist gar nicht nötig, wenn der Classpath einmal eingetragen ist, wird er im .odb Dokument gespeichert.
Gruß R
Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: LibreOffice Base mit int. & ext. HSQL-DB unter Linux nut

Beitrag von herz4 »

Danke Robert und F3K Total,
Ihr gebt mir eine ganze Menge neuer Impulse, die ich übernehmen und testen will. Bisher rief ich das Startmakro beim Öffnen anstatt wie Ihr beim Ereignis "Laden des Dokuments beendet" auf, ferner nahm ich ThisDatabaseDokument anstatt ThisComponent. Bei mir wird dieses Probieren wahrscheinlich erst am Montag gehen. Ich hoffe, dann kann ich den Thread als gelöst markieren! :D
RobertG
********
Beiträge: 2068
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: LibreOffice Base mit int. & ext. HSQL-DB unter Linux nut

Beitrag von RobertG »

Hallo herz4,

ich habe den Hinweis von F3K Total aufgegriffen und gleich das Makro wieder ausgeschaltet. Es reicht, das Makro einmal aufzurufen, wenn Du die *.odb-Datei gestattet hast (Extras → Makros → Makro ausführen). Dann macht es auch wohl mehr Sinn, das Makro gar nicht erst in die Bibliothek der *.odb-Datei einzubauen, sondern separat unter "Meine Makros" abzuladen.
Genau genommen brauchst Du nicht einmal ein Makro, wenn Du aus der gepackten *.odb-Datei die Datei content.xml anpasst:

Code: Alles auswählen

<db:data-source-settings>
<db:data-source-setting db:data-source-setting-is-list="false" db:data-source-setting-name="JavaDriverClass" db:data-source-setting-type="string">
<db:data-source-setting-value>org.hsqldb.jdbcDriver</db:data-source-setting-value>
</db:data-source-setting>
<db:data-source-setting db:data-source-setting-is-list="false" db:data-source-setting-name="JavaDriverClassPath" db:data-source-setting-type="string">
<db:data-source-setting-value>file:///home/robby/public_html/hsqldb_test/hsqldb.jar</db:data-source-setting-value>
</db:data-source-setting>
</db:data-source-settings>
Dies mit dem entsprechenden Pfad in die Datei eingebaut ergibt dann eine Verbindung zu dem externen Java-Treiber.

Das Makro ist hier natürlich die elegantere Lösung ...

Gruß

Robert
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: LibreOffice Base mit int. & ext. HSQL-DB unter Linux nut

Beitrag von F3K Total »

Moin,
RobertG hat geschrieben:Das Makro ist hier natürlich die elegantere Lösung ...
Da möchte ich noch einmal die o.a. Extension empfehlen. Damit kann man innerhalb eines Dialoges alle notwendigen Einstellungen komfortabel vornehmen, siehe Bild:
FreeHSQLDB.png
FreeHSQLDB.png (13.5 KiB) 9895 mal betrachtet
Gruß R
Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: LibreOffice Base mit int. & ext. HSQL-DB unter Linux nut

Beitrag von herz4 »

Nochmals Danke Robert und F3K Total,
ich bedaure, Eure Hilfen reichten für mein Verständnis noch nicht, sowohl per (geändertem) Makro als auch per Erweiterung FreeHSQLDB. Bei letzterem wird mir auch immer zutreffender hsqldb.jar-Treiber angezeigt, dennoch nicht genutzt! Immer gleiche Fehlerausschrift: "error in script file line: 1 Unexpected token UNIQUE, requires COLLATION in statement [SET DATABASE UNIQUE]", welche mich weiterhin argwöhnen lässt, es wird unverändert der HSQLBD 1.8 - der interne - Treiber genutzt. Dies bestätigt ein Löschen des .properties-files mit anschließendem Öffnen der .odb: hernach ist ein neues .properties-file geschrieben, dessen erste Zeile HSQL 1.8(!) ausweist.

Kann die Ursache etwa im anhängenden "Anwendungsprotokoll"(?) zu finden sein, welches mutmaßlich beim Booten des Linux-Systems erstellt wird. Da wird auf einen Java-Fehler hingewiesen:
A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x003fdba2, pid=2171, tid=3077761024
#
# JRE version: 6.0_27-b27
# Java VM: OpenJDK Client VM (20.0-b12 mixed mode, sharing linux-x86 )
# Derivative: IcedTea6 1.12.6
# Distribution: Ubuntu 12.04 LTS, package 6b27-1.12.6-1ubuntu0.12.04.2
# Problematic frame:
# C [libuno_cppu.so.3+0x18ba2] uno_type_isAssignableFromData+0x8430 ... (Ende vom Auszug des Anfangs!)

(Ich schaffte es nicht, die etwa 80kB große Log-Datei anzuhängen.)

Im Anhang ein Auszug aus der content.xml-Datei, die Bestandteil der odb-Datei ist. Auch dort wird der richtige - HSQL 2.3 - Treiber zugewiesen.

Ich freute mich weiter sehr über Hilfe!
Dateianhänge
content.odt
Auszug aus content.xml
(15.23 KiB) 218-mal heruntergeladen
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
RobertG
********
Beiträge: 2068
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: LibreOffice Base mit int. & ext. HSQL-DB unter Linux nut

Beitrag von RobertG »

Hallo herz4,

wenn [SET DATABASE UNIQUE] nicht ausgeführt werden kann, dann kann es sich nicht um die 2.3 handeln, die auf die Dateien der 2.3 zugreifen will.
Wenn Du sogar Meldungen bezüglich einem "fatal error" aus Deiner JRE bekommst, dann würde ich zuerst einmal der Ursache nachgehen.

LO 3.5 ist Anfang letzten Jahres raus gekommen. Die JRE, die Du installiert hast, ist auch recht alt. Gibt es Da für Deine Distribution kein Update?

Gruß

Robert
Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: LibreOffice Base mit int. & ext. HSQL-DB unter Linux nut

Beitrag von herz4 »

Hallo Robert,
abermals danke ich Dir, zudem für die schnelle Hilfe. :)
Wie wohl unschwer zu erkennen ist, bin ich Linux-Neuling, weshalb es länger dauern dürfte, bis ich Deinen Anregungen gänzlich folgen kann ...
(Ich dachte, Linux-Update - innerhalb der Distribution - wird automatisch gemacht?!)
Ich melde mich hier wieder, wenn ich Up-to-date bin; bis dahin lasse ich hier noch "Aktenzeichen xyz ungelöst" - oder?
Mit bestem Gruß
Herz4
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
RobertG
********
Beiträge: 2068
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: LibreOffice Base mit int. & ext. HSQL-DB unter Linux nut

Beitrag von RobertG »

Hallo herz4,

mit Linux Mint 13 hast Du eine Version, die sogenannten Langzeitsupport bis April 2017 ermöglicht. Soweit ich das weiß geht es da aber eher um Sicherheitsfixes als um neuere Versionen von Einzelprogrammen. Das ganze basiert ja auf den entsprechenden Ubuntu-Pakten 12/04. Von Ubuntu habe ich wenig Ahnung, aber auch dort wird es sicher gesonderte Repositories geben, die für Leute gedacht sind, die gerne auch einmal über den (eigentlich als stabil gedachten) Tellerrand schauen. Vor allem für Java würde ich da einmal nachsehen, ob es nicht ein anderes Paket gibt.
Ich habe einmal hier geschaut:
https://wiki.ubuntu.com/PrecisePangolin ... ntuDesktop. Da steht zu Java, dass unterschiedliche Versionen zur Verfügung stehen:
The default run time for Java is OpenJDK 6b24 (IcedTea 1.11.1). OpenJDK 7u3 (IcedTea 2.1) is available in the archive as well.
Gruß

Robert
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: LibreOffice Base mit int. & ext. HSQL-DB unter Linux nut

Beitrag von F3K Total »

Hi,
herz4 hat geschrieben:"error in script file line: 1 Unexpected token UNIQUE, requires COLLATION in statement [SET DATABASE UNIQUE]", welche mich weiterhin argwöhnen lässt, es wird unverändert der HSQLBD 1.8 - der interne - Treiber genutzt.
Hast Du unter Extras/Optionen/Java-> keinen Classpath gesetzt, wie ich bereits einmal geschrieben habe?
F3K Total hat geschrieben:Ein globaler Classpath (Extras/Optionen...Java) darf nicht eingetragen sein.
Gruß R
Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: LibreOffice Base mit int. & ext. HSQL-DB unter Linux nut

Beitrag von herz4 »

Ich habe keinen Classpath gesetzt und werde mich um Java kümmern! :?
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
Benutzeravatar
herz4
****
Beiträge: 145
Registriert: Mi, 29.09.2010 13:41

Re: LibreOffice Base mit int. & ext. HSQL-DB unter Linux nut

Beitrag von herz4 »

Hallo Robert und F3K Total,
nachdem ich zur JavaRE von Sun 1.6.0_27 noch von Oracle 1.7.0_25 hinzugefügt hatte und auch damit keinen Erfolg mit Base ext+int hatte, installierte ich LO4.1.0.4 und siehe da, jetzt gehts.
Unter LO4.1 läuft es ohne Makro, reicht wenn der Pfand zur entsprechenden HSQLDB.jar im content.xml eingetragen ist, was ja schon gegeben war.
Nun habe ich ein neues Problem. Mein Linux hat zwei LO - 3.5 und eben 4.1. Ich würde gern 3.5 runterschmeißen. Muss ich dazu alle seine Teile(?!) entfernen oder geht das irgendwie einfacher?
Ferner: ist das in dem Thread beschriebene Problem als gelöst zu markieren? Ich kann nicht mit Bestimmtheit sagen, dass LO3.5.7.2 nicht das Gewünschte leistet, noch das Gegenteil!?
Mit bestem Gruß, herz4
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
Antworten