Java h2 Speicherot der neuen Datenbank festlegen

Tr3x

Lieutenant
Registriert
Feb. 2007
Beiträge
650
Hallo,

ich tüfftle gerade an einem Java Programm. Dieses verwendet die h2 eingebundene Datenbank. Soweit läuft alles gut. Da ich die Anwendung gern über einen UBS-Stick trage, soll die angelegte Datenbank auch im selben Verzeichnis sein.

Jetzt konnte ich schon folgendes erreiichen das er es nicht in meinen Benutzerordner anlegt:
"jdbc:h2:file:P:\Developer\TestProgr"

wenn ich es wie in dem quickstart glesen verusche mit:
"jdbc:h2:test"
bekomm ich nur folgende fehlermeldung:
A file path that is implicitly relative to the current working directory is not allowed in the database URL "jdbc:h2:test". Use an absolute path, ~/name, ./name, or the baseDir setting instead. [90011-179] 90011/90011 (

weiß jemand woran es hier scheitern könnte?
 
Naja, da steht ja, dass er es nicht implizit relativ haben möchte. Dann gib es ihm explizit relativ, wie er dir auch vorschlägt: ./test

Alternativ: Probier es mit -baseDir wie hier beschrieben.

P.S.: Keine Ahnung ob und wie das für Windows funktioniert.
 
Zuletzt bearbeitet:
hallo,

mit jdbc:h2:./test bekomm ich leider eine andere fehlermeldung
"Eingabe/Ausgabe Fehler: "C:/Windows/System32/test.mv.db"
IO Exception: "C:/Windows/System32/test.mv.db" [90028-179] 90028/90028"

die verwendung von baseDir ist mir noch nicht klar. muss ich
jdbc:h2:test; -baseDir verwenden oder ist das eine einstellung die icih woanders vornehmen muss
 
In System32 hast du vermutlich als Nicht-Admin-Nutzer keine Schreibrechte, daher die IOException. Aber da willst du die DB ja auch nicht wirklich haben. Komisch, dass du da rauskommst.

Den baseDir-Parameter setzt du laut der Doku dort, wo du die h2 DB initialisierst und das kann sowohl embedded, also innerhalb der Anwendung sein oder als standalone, d.h. du startest direkt die h2.jar. Für beides findest du auf der verlinkten Seite Beispiele (einfach mit ctrl+f -> baseDir mal durchhüpfen) und eines von beidem hast du vermutlich in Benutzung.
 
Tumbleweed schrieb:
In System32 hast du vermutlich als Nicht-Admin-Nutzer keine Schreibrechte, daher die IOException. Aber da willst du die DB ja auch nicht wirklich haben. Komisch, dass du da rauskommst.

Eigentlich nicht sehr komisch, die java.exe liegt wahrscheinlich einfach da (wird von manchen Installern einfach da reingeworfen).

Lösung:

1) Gewünschtes JREs/JDKs laden und jeweils in einem separaten Ordner installieren (zB: D:\dev\java\jdk[6|7|8])
2) JDK zum ausführen verwenden (IDE konfigurieren, oder JDK/bin an den Anfang des Pfad setzen, oder java.exe manuell aufrufen)
3) H2-URL: jdbc:h2:./test ist richtig. Mehr Beispiele siehe http://www.h2database.com/html/features.html#embedded_databases
4) Profit.
 
Zurück
Oben