Перейти к основному содержимому

H2Database

Введение​

Большое преимущество H2Database заключается в том, что ему не нужен сервер базы данных, поскольку он может работать встроенно в приложениях.

H2Database рекомендуется только для целей разработки и тестирования; в производственной среде следует использовать другой, более надёжный тип базы данных.

Рекомендации и ограничения​

H2Database не позволяет более чем одному процессу обращаться к файлу базы данных.

Поэтому, если нужно работать с файлом или получить доступ через веб-консоль, придётся остановить выполнение Netuno.

Файлы базы данных​

Файлы базы данных H2Database находятся в папке dbs, которая находится внутри приложения, например:

  • apps/мое_приложение/dbs

Если хотите переименовать базу данных, измените имя файла и исправьте конфигурацию приложения, например в среде development:

  • config/_development.json

Исправление нужно сделать в части конфигурации подключения к базе данных:

...
"db": {
"default": {
"password": "",
"engine": "h2",
"port": "",
"host": "",
"name": "моя_база",
"username": ""
}
}
...

Веб-консоль​

Может потребоваться прямой доступ к базе данных; в этом случае это можно сделать через веб-консоль H2Database.

Веб-консоль запускается при прямом запуске jar H2Database следующим образом:

java -cp web/WEB-INF/lib/h2-*.jar org.h2.tools.Server

Предполагается, что вы находитесь в корне Netuno.

Чтобы просмотреть доступные параметры:

java -cp web/WEB-INF/lib/h2-*.jar org.h2.tools.Server -?

Запускает веб-консоль на порту Netuno 9000 и разрешает доступ с внешних IP-адресов:

java -cp web/WEB-INF/lib/h2-*.jar org.h2.tools.Server -webPort 9000 -tcpAllowOthers

Перед этим следует остановить выполнение Netuno, чтобы несколько процессов не работали с файлом базы данных одновременно.

JDBC URL для подключения к базе данных должен быть:

jdbc:h2:./apps/мое_приложение/dbs/моя_база;MODE=PostgreSQL;CASE_INSENSITIVE_IDENTIFIERS=TRUE;DATABASE_TO_LOWER=TRUE;DEFAULT_NULL_ORDERING=HIGH;DB_CLOSE_ON_EXIT=TRUE;

Замените часть мое_приложение на имя приложения, а моя_база — на имя соответствующей базы данных.

Аутентификация выполняется под пользователем sa, но без пароля.

Сброс доступов​

Особенно когда утерян доступ пользователя dev.

Получите доступ через веб-консоль H2Database, как описано выше.

Чтобы восстановить доступ, удалите данные из таблицы netuno_user, например:

  • delete from netuno_user

Таким образом, при следующем запуске Netuno заново создаст пользователей с их стандартными паролями.