Как экспортировать постоянную базу данных в базу данных в памяти в h2 из терминала - PullRequest
0 голосов
/ 17 июня 2020

EDIT: исправлена ​​неверная команда. У меня на диске есть база данных h2. Как я могу экспортировать его в память? Я пробовал следующее: -

java -cp h2/bin/h2*.jar org.h2.tools.Server -tcp
java -cp h2/bin/h2*.jar org.h2.tools.RunScript -url jdbc:h2:$(pwd)/restapi -user sa -script export.sql
java -cp h2/bin/h2*.jar org.h2.tools.RunScript -tcp -url jdbc:h2:mem:testdb -user sa -script db-dump.sql &

где экспорт. sql содержит: -

SCRIPT TO 'db-dump.sql

но когда я пытаюсь подключиться к jdb c: h2: mem: testdb через веб-консоль, я получаю следующую ошибку: -

Database "mem:testdb" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-200] 90149/90149 (Help)

1 Ответ

1 голос
/ 18 июня 2020

Server инструмент не имеет параметров подключения и не может быть использован для создания новой базы данных; ваша первая команда недействительна. Вы проверили его вывод? Инструмент

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

Вместо этого вам нужно предпринять другие шаги.

  1. Экспортируйте вашу базу данных в SQL скрипт с SCRIPT TO 'db-dump.sql' (если у вас есть открытое соединение с ним где-то ) или с
java -cp h2/bin/h2*.jar org.h2.tools.Script -url jdbc:h2:~/test -user sa -script db-dump.sql

, если эта постоянная база данных нигде не открыта.

Запустить обычный процесс сервера H2; он обеспечивает прозрачную аутентификацию для консоли H2, которая позволяет вам создавать с ней новую базу данных:
java -jar h2/bin/h2*.jar

Он должен открывать окно веб-браузера с консолью H2.

В этом окне укажите jdbc:h2:mem:1;INIT=RUNSCRIPT FROM 'db-dump.sql' как JDB C URL.

Вы можете повторно открыть такое окно, дважды щелкнув значок H2 Console на панели задач, и вы можете использовать другие команды из его контекстного меню.

Обратите внимание, что если вы наберете localhost:8082 в браузере напрямую, вы не сможете создать в нем новую базу данных; вам действительно нужно открыть его из H2 (или вы можете скопировать URL-адрес с временным ключом безопасности из его окна состояния, доступного в контекстном меню значка в трее).

...