Не удается просмотреть файл базы данных H2?

Я создаю базу данных 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>

Я использую версию 1.3.166 com.h2database.h2 фляга

Когда я запускаю свои тесты, я вижу базу данных, созданную в target/db каталог и testdb.h2.db Файл существует. Мои тесты запускаются и загружают данные из базы данных. Я могу открыть target/db/testdb.h2.db файл и увидеть операторы SQL, которые я использовал для создания базы данных.

Тем не менее, когда я пытаюсь загрузить target/db/testsb.h2.db файл в инструмент просмотра базы данных, такой как DBVisualizer, я не вижу таблиц или данных. Для DBVisualizer я указываю режим H2(Embedded).

Я также попробовал консоль Н2, но show tables Команда возвращает пустой набор результатов.

Я не вижу, что я делаю неправильно: файл базы данных существует, тесты выполняются на нем правильно, но я не могу открыть этот файл в браузере базы данных.

Какие-либо предложения?

2 ответа

Решение

Скорее всего, проблема в том, какой URL базы данных вы используете.

jdbc:h2:file:target/db/testdb

Это означает, что файл базы данных хранится относительно текущего рабочего каталога. Так что это зависит от того, где вы запустили приложение. Если вы запустили DBVisualizer в другом каталоге (что, скорее всего, вы сделали), то он создает новую базу данных в другом каталоге.

Чтобы убедиться, что вы используете одну и ту же базу данных, я предлагаю использовать абсолютное имя каталога или относительно текущего домашнего каталога пользователя, как описано в документации H2:

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

Префикс file: не является обязательным.

Если вы получаете сообщение об ошибке типа

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]

проблема (как говорится в сообщении) в том, что вы используете базу данных, созданную в старой версии h2. Для просмотра базы данных с помощью dbVisualizer вы можете создать новый драйвер базы данных:

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

Заполните поля и выберите правильный файл h2 jar, и все будет хорошо.

Другие вопросы по тегам