Access mem or fs database tables using H2 console
Asked Answered
I

4

14

I'm trying to access my application's tables in Play! Framework, but I can't find it using the console. For instance, I have two entity models: Address and Campus.

I can create objects and save normally, but I would like to see the changes in fs or mem DB, but the H2 console doesn't show the tables Address and Campus. I'm using the default settings to log in localhost:9000/@db.

What am I doing wrong?

Thanks in advance.

Iliad answered 7/6, 2011 at 13:31 Comment(2)
I don't know the play framework so far... what is your database URL (if there is a database URL in this framework)?Lightweight
Thanks for this, this is a H2 Gui for PlayFramework, saved me a lot of work looking for a GUI!Fold
C
18

The correct URL for the inmemory database is:

jdbc:h2:mem:name-of-your-play-db
Colorblind answered 9/6, 2011 at 15:46 Comment(1)
the url is logged in the logging information and you can grab it from there.Kaiser
U
10

Steps I took to get a filesystem H2 database console working where my app is in c:\play\myapp:

  1. Go to localhost:9000/@db
  2. Choose the Generic H2 Server option in the first box
  3. For the url enter jdbc:h2:file:c:/play/myapp/db/h2/play
  4. Username is sa password is blank
Utas answered 1/7, 2011 at 0:46 Comment(1)
Yes, don't do what I did and add the .h2 extension to the play filename in step 3!Fold
L
0

Most likely the problem is the database URL, so your application and the H2 Console are using different databases. I suggest to use a database URL of the form jdbc:h2:~/data/test or (maybe even better) using an absolute path of the form jdbc:h2:/data/test, or when using Windows even with drive letter: jdbc:h2:c:/data/test. See the documentation about where the database files are stored.

Lightweight answered 8/6, 2011 at 4:41 Comment(3)
is that for just the filesystem method? If I am going to do filesystem, I mine as well use postgres....BUT I would love to connect to the in-memory one just cause it's so fast(no disk i/o).Kaiser
never mind, didn't know localhost:9000/@db was a url you could use that actually works!!!! and just hit connect button. of course, I got an internal error as I had H2 console running....can't do that for some reason.Kaiser
I didn't fully understand what your wrote... but keep in mind that when using jdbc:h2:tcp://localhost:9000/@db it is relative to the current working directory of the server. An absolute directory would be jdbc:h2:tcp://localhost:9000//data/test (two slashes after :9000).Lightweight
L
0

My five cents. In my case (Unix OS) I just managed to make it work using ~/ in my persistence.xml:

<property name="javax.persistence.jdbc.url" value="jdbc:h2:~/data/testxdb" />

In this way the Database was created in: /Users/lm2a/data/testxdb.mv.db and starting the console with

java -jar h2-2.1.214.jar

Finally I could see my Tables.

Luanaluanda answered 6/9, 2022 at 6:57 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.