Где встроенные базы данных H2 хранят данные? - PullRequest
43 голосов
/ 27 февраля 2012

Итак, я только недавно начал изучать, как работают базы данных, как использовать SQL и т. Д.и решил начать внедрять встроенную базу данных в свое Java-приложение (в частности, базу данных H2) и, похоже, довольно хорошо работал на компьютере, на котором я кодировал.

Когда я перешел на другой компьютер, чтобы продолжить свое кодированиеЯ заметил, что даже если я перенес файл встроенной базы данных (h2 - *. Jar), ​​все подготовленные таблицы, которые я создал на первом компьютере, не существуют на втором.У меня почему-то было предвзятое мнение, что фактические данные, сгенерированные с помощью механизма базы данных, также хранятся во встроенном файле базы данных.

Итак, мой вопрос: где на самом деле хранятся данные из базы данных?Можно ли подготовить базу данных, которая уже содержит тысячи записей, и распространять ее вместе с реальным приложением?

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

Спасибо!

Ответы [ 3 ]

75 голосов
/ 27 февраля 2012

Прочтите FAQ :

Где хранятся файлы базы данных?

При использовании таких URL-адресов, как jdbc:h2:~/test, база данных сохраняется вкаталог пользователя.Для Windows это обычно C:\Documents and Settings\<userName> или C:\Users\<userName>.Если базовый каталог не задан (как в jdbc:h2:./test), файлы базы данных хранятся в каталоге, где запущено приложение (текущий рабочий каталог).При использовании приложения H2 Console из меню «Пуск» это <Installation Directory>/bin.Базовый каталог может быть установлен в URL базы данных.Можно использовать фиксированный или относительный путь.При использовании URL jdbc:h2:file:./data/sample база данных сохраняется в каталоге данных (относительно текущего рабочего каталога).Каталог создается автоматически, если он еще не существует.Также можно использовать полное имя каталога (а для Windows - имя диска).Пример: jdbc:h2:file:C:/data/test

11 голосов
/ 27 февраля 2012

h2-*.jar - это просто движок (код) базы данных. Он доступен только для чтения и не хранит никакой информации. Данные в H2 могут храниться в памяти или на диске в указанном файле. Вы на самом деле указываете один:

JDBC:h2:~/test/

Вы найдете свою базу данных в своем домашнем каталоге в подкаталоге test. Просто скопируйте эти файлы в домашний каталог на другом компьютере, и H2 найдет их, если использует тот же URL.

0 голосов
/ 04 февраля 2019

В Windows вам нужно установить URL JDBC со следующим значением:

JDBC URL: jdbc:h2:mem:testdb
...