HSQL-Datenbank wird nicht korrekt angelegt

Bernhard Bergmann

Grünschnabel
Hallo,

Ich möchte eine HSQL-Datenbank anlegen. Leider funktioniert das bisher nicht wie gewünscht.

In einigen Foren habe ich folgendes Vorgehen gefunden und nachvollzogen:
- neuestes ZipFile von http://sourceforge.net/projects/hsqldb/files/ heruntergeladen und
in Verzeichnis d:\testDB entpackt
- das mitgelieferte Tool \testDB\bin\runManagerSwing.bat gestartet
- in der Maske "Connect" folgendes eingetragen:
--> Type in "HSQL Datadase Engine Standalone" geändert
--> in URL den Platzhalter «database/path?» durch "d:\testDB" ersetzt
--> mit OK gestartet
- unter "Option" den Punkt "insert test data" gestartet => Tabelle Customer wird angezeigt
- das Tool mit "File/Exit" verlassen.

Soweit hat alles ohne Fehlermeldung funktioniert.
Allerdings wird die Datenbank offensichtlich nicht korrekt angelegt. Vielmehr gibt es unter d:\ nur ein Verzeichnis und 4 Dateien:
testDB.tmp (Dir)
testDB.lck
testDB.log
testDB.properties
testDB.script

In verschiedenen Foren habe ich bereits gelesen, dass das Vorhandensein von testDB.tmp und testDB.ick darauf hinweist, dass die Datenbank nicht richtig geschlossen wurde. Das sollte aber mit dem Verlassen des Tools über Exit eigentlich korrekt passieren. Auch "Commands/Scutdown" habe ich schon versucht mit dem gleichen Ergebnis.

Auch mit ältere Versionen der Datenbank, anderen Windows-BS (Windows 8, XP) und anderen Verzeichnissen habe ich es schon versucht - immer mit dem gleichen Ergebnis.
Was mache ich falsch?
 
Hi.

Wie kommst du denn darauf das es nicht geklappt hat, bzw. was "wünscht" du dir denn?

testDB.script ist die Datebank. Schau mal da rein (mit einem Texteditor) was da drin steht...
 
Oops,
Ich habe eigentlich als Datenbank so etwas erwartet wie eine Datei "testDB.data" mit Binärzeichen oder ein Verzeichnis testDB (ohne .tmp) mit den Tabellen drin.
Die Datei testDB.script enthält tatsächlich viele (alle?) Daten incl. Tabelle "CUSTOMER".

Dass es mit dem Anlegen und Füllen der Datenbank nicht geklappt hat, hatte ich aus 2 Gründen vermutet:
a) das in meinem 1.Post bereits angesprochene Verzeichnis "testDB.tmp"
b) Fehlermeldungen beim Versuch, die Datenbank in Java (Eclipse) zu lesen
z.B. "java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: CUSTOMER"
Das hatte ich so verstanden, dass Java zwar eine Datenbank findet, aber keine Tabelle "CUSTOMER".
Offensichtlich hat das aber eine andere Ursache.

Ich verbinde mich wie folgt mit der Datenbank (nach Galileo-Buch "Java ist auch nur eine Insel;):
con = DriverManager.getConnection(
"jdbc:hsqldb:file:testDB;shutdown=true", "SA", "" );
Statement stmt = con.createStatement();
Damit wird aben nur eine leere DB mit 2 Dateien (testDB.properties und testDB.script) im Eclipse-Workspace erzeugt, in der natürlich die Tabelle "CUSTOMER" fehlt. Wenn ich die (gefüllte) Datenbank in den Workspace kopiere, wird diese durch die leere DB überschrieben.
Was mache ich falsch (bitte entschuldige die dummen Fragen - ich mache gerade meine ersten Schritte in Java/HSQL).
 
Hurra,
Jetzt hat es geklappt.

Ich darf nicht ALLE 4 Dateien sondern nur die beiden Dateien
- testDB.properties und
- testDB.script
in den Eclipse Workspace kopieren. Dann wird keine neue (leere) Datenbank angelegt, sondern die vorhandene (gefüllte) verwendet.

Frage ist nur, wieso überhaupt die Dateien
- testDB.lck und
- testDB.log
mit dem Tool "runManagerSwing.bat" erzeugt werden bzw. fälschlicherweise stehen bleiben. Offensichtlich geht beim Füllen der Datenbank doch irgendetwas schief.
 
Frage ist nur, wieso überhaupt die Dateien
- testDB.lck und
- testDB.log
mit dem Tool "runManagerSwing.bat" erzeugt werden bzw. fälschlicherweise stehen bleiben. Offensichtlich geht beim Füllen der Datenbank doch irgendetwas schief.
Evtl. wird dort von der SWING Applikation kein SHUTDOWN ausgeführt. Aber bei einigen Anwendungen auf meinem System bleibt die lck Datei auch liegen.

Über die Dateien von HSQLDB => http://www.hsqldb.org/doc/guide/ch01.html#N100F3
 
Zurück