2013-04-17 24 views
5

Tworzę bazę danych H2 w moich testach jednostkowych. Baza wykorzystuje następujące właściwości:Nie można przeglądać pliku bazy danych H2?

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
    destroy-method="close"> 
    <property name="driverClassName" value="org.h2.Driver"/> 
    <property name="url" value="jdbc:h2:file:target/db/testdb"/> 
    <property name="username" value="sa"/> 
    <property name="password" value=""/> 
</bean> 

używam wersji 1.3.166 pliku com.h2database.h2 słoiku.

Po uruchomieniu testów widzę bazę danych utworzoną w katalogu target/db i istnieje plik testdb.h2.db. Moje testy działają i ładują dane z bazy danych. Mogę otworzyć plik target/db/testdb.h2.db i zobaczyć instrukcje SQL, których użyłem do utworzenia bazy danych.

Jednak, gdy próbuję załadować plik target/db/testsb.h2.db do narzędzia do przeglądania bazy danych, takiego jak DBVisualizer, nie widzę żadnych tabel ani danych. Dla DBVisualizer określam tryb H2 (osadzony).

Próbowałem również konsoli H2, ale polecenie show tables zwraca pusty zestaw wyników.

Nie widzę, co robię źle: plik bazy danych istnieje, testy działają poprawnie, ale nie mogę otworzyć tego pliku w przeglądarce bazy danych.

Wszelkie sugestie?

Odpowiedz

5

Najprawdopodobniej problem polega na używaniu adresu URL bazy danych.

jdbc:h2:file:target/db/testdb 

Oznacza to, że plik bazy danych są przechowywane względem bieżącego katalogu roboczego. To zależy od miejsca, w którym rozpocząłeś aplikację. Jeśli uruchomiłeś DBVisualizer w innym katalogu (co najprawdopodobniej zrobiłeś), to tworzy on nową bazę danych w innym katalogu.

Aby upewnić się, że używasz tej samej bazy danych, proponuję użyć bezwzględną nazwę katalogu, lub w stosunku do bieżącego katalogu domowym użytkownika, jak opisano w dokumentacji H2:

jdbc:h2:~/relative/to/user/home/dir/testdb 
jdbc:h2:/absolute/path/testdb 

Przedrostek file: jest opcjonalny .

+4

W rzeczywistości problemem było to, jak określiłem plik w DBVisualizer. Poprosił o plik bazy danych i otwiera okno dialogowe wyboru pliku, a ja dwukrotnie kliknąłem plik 'target/db/testdb.h2.db'. Ale właściwą metodą jest usunięcie rozszerzenia '.h2.db'. Zły projekt interfejsu użytkownika IMHO. –

+1

Myślę, że w następnej burmistrzowskiej wersji H2 (2.0 być może) nie będzie żadnego twardego przyrostka nazwy pliku. –

+1

@JohnQCitizen Wygrywasz cały mój internet przez tydzień! To był problem. Korzystałem z migracji baz danych i nie mogłem ustalić, dlaczego tabele nie zostały utworzone. Okazało się, że usunięcie pliku .h2.db rozwiązało problem. Użyj ui fail!I dzięki za rozwiązanie! – Maik

0

Jeśli pojawi się błąd jak

Unsupported database file version or invalid file header in file "Old database: 
/path/to/databasename.data.db - please convert the database to a SQL script and 
re-create it." [90048-167] 

problemem jest (jak mówi) wiadomość, że używasz bazy danych utworzonej ze starej wersji H2. W celu przeglądania bazy danych z DbVisualizer można utworzyć nowego sterownika bazy danych:

Tools>Driver manager...>Create a new driver

wypełnić pola i wybrać właściwą h2 pliku jar, i powinno być dobrze iść.

Powiązane problemy