Не удается просмотреть файл базы данных 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, и все будет хорошо.