Я просто пытаюсь просмотреть содержимое базы данных H2 для встроенной базы данных H2, которую создает spring -boot, когда я ничего не указываю в моем application.properties и начинаю с mvn spring: run. Я вижу, как hibernate JPA создает таблицы, но если я попытаюсь получить доступ к консоли h2 по указанному ниже URL-адресу, в базе данных нет таблиц.
http://localhost:8080/console/
Я вижу такие предложения: Просмотр содержимого встроенной базы данных H2, созданной Spring
Но я не знаю, где разместить предлагаемый XML в spring -boot, и даже если бы я это сделал, я не хочу, чтобы h2console больше была доступна, когда настроена внешняя база данных, поэтому более вероятно, что мне нужно справиться с этим. с каким-то условным кодом (или, может быть, просто позволить Spring автоматически обрабатывать его в наиболее идеальном случае, когда я включаю только H2, когда активирован профиль maven).
Есть ли у кого-нибудь пример кода, показывающий, как заставить консоль H2 работать при загрузке (а также способ узнать, что такое строка подключения jdbc, которую использует Spring)?
Ответы:
Вот как я получил консоль H2, работающую в весенней загрузке с H2. Я не уверен, правильно ли это, но, поскольку никто другой не предлагал решения, я собираюсь предположить, что это лучший способ сделать это.
В моем случае я выбрал конкретное имя для базы данных, чтобы мне было что вводить при запуске консоли H2 (в данном случае «AZ»). Я думаю, что все это необходимо, хотя кажется, что отказ от spring.jpa.database-platform ничему не повредит.
В application.properties:
В Application.java (или в какой-то конфигурации):
Затем вы можете получить доступ к консоли H2 по адресу {server} / console /. Введите это как URL-адрес JDBC: jdbc: h2: mem: AZ
источник
new WebServlet()
дайте мне проблемы. Какой класс это импортирует для вас? Для меня он использует javax.servlet.annotation.WebServlet как единственный вариант, и это всего лишь интерфейс.jdbc:h2:mem:testdb
с пустым именем пользователя и пустым паролем. localhost: 8082 работает с этой настройкой.Начиная с Spring Boot
1.3.0.M3
, консоль H2 может быть настроена автоматически.Предпосылки:
Даже если вы не используете Spring Boot Dev Tools, вы все равно можете автоматически настроить консоль, установив
spring.h2.console.enabled
значениеtrue
Ознакомьтесь с этой частью документации, чтобы узнать все подробности.
Обратите внимание, что при такой настройке консоль доступна по адресу: http: // localhost: 8080 / h2-console /
источник
spring-boot-starter-web
в качестве зависимостиjdbc:h2:mem:testdb
это для URL-адреса подключения, а не для URL-адреса, поЯ нашел хороший учебник по этой теме:
https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/
В основном правильный URL-адрес JDBC для меня был:
jdbc:h2:mem:testdb
источник
Из http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
Веб-консоль H2 (H2ConsoleProperties):
Добавление двух приведенных выше строк в мой файл application.properties было достаточно для доступа к веб-консоли базы данных H2 с использованием имени пользователя (sa) и пароля по умолчанию (пусто, например, не вводите пароль, когда пользовательский интерфейс запрашивает вас).
источник
spring.h2.console.enabled=true
? Значение false отключит его. Иspring.h2.console.path=/h2-console
является избыточным, потому что/h2-console
это путь по умолчанию из Spring Boot. Согласно документации «По умолчанию консоль будет доступна в / h2-console. Вы можете настроить путь к консоли, используя свойство spring.h2.console.path». Подробнее здесь docs.spring.io/spring-boot/docs/current/reference/html/…Аналогичный ответ с пошаговым руководством.
pom.xml
илиbuild.gradle
Maven
Gradle
http://localhost:8080/h2-console/
jdbc:h2:mem:testdb
как URL-адрес JDBCисточник
У меня были только свойства ниже в /resources/application.properties. После запуска весенней загрузки с использованием этого URL-адреса ( http: // localhost: 8080 / h2-console / ) таблица в консоли H2 была видна и прочитана для просмотра данных таблицы, также вы можете запускать простые команды SQL. Во-первых, в вашем java-коде при выборке данных имена столбцов пишутся в верхнем регистре, хотя schema.sql использует имена в нижнем регистре :)
источник
Для Spring Boot 2.1.1 прямо из Spring Initialzr:
По умолчанию с Devtools является http://127.0.0.1:8080/h2-console/
Без devtools - нужно установить в свойствах:
spring.h2.console.enabled=true spring.h2.console.path=/h2-console
Как только вы попадете туда - установите JDBC URL: jdbc: h2: mem: testdb (по умолчанию не будет работать)
источник
Если вы используете инструменты разработчика Spring Boot, по умолчанию в нем включена консоль H2. Доступ к нему можно получить из
/h2-console
/. В интерфейсе входа в систему для вводаJDBC URL
используйте значениеjdbc:h2:mem:testdb
. Обратите внимание наmem
строку.Если вы не используете инструменты разработчика Spring Boot, вы можете включить консоль в
application.properties
usingspring.h2.console.enabled=true
. Это включит консоль под/h2-console
. Если вы хотите изменить URL-адрес, вы можете добавить еще одну запись с помощьюspring.h2.console.path=my_console_path
.Имя схемы по умолчанию -
testdb
.Подробнее в документации по Spring Boot .
источник
jdbc:h2:mem:testdb
установлен URL-адрес jdbc по умолчанию? Я потратил много времени на размышления о том, где мои jpa-сущности пошли не так,Проверить Spring application.properties
здесь testdb определяется базой данных. Убедитесь, что консоль h2 имеет такое же значение при подключении, в противном случае она подключится к базе данных по умолчанию.
источник
Чтобы получить таблицы, все, что вам нужно сделать, это создать 2 sql файла schema.sql (для создания таблиц) и data.sql (данные для созданных таблиц). Эти файлы нужно поместить в папку src / main / resources. Spring boot автоматически обнаруживает их и позаботится обо всем остальном во время выполнения.
Если в вашем проекте используется более 2 БД, убедитесь, что вы используете определенные файлы, например (schema-h2.sql - для БД h2, schema-oracle.sql - для БД Oracle). То же самое следует соблюдать и для data.sql.
Также убедитесь, что вы удаляете таблицы, добавляя оператор drop table в свой schema.sql в качестве первого оператора. Чтобы избежать добавления повторяющихся записей.
Ссылка на весеннюю загрузку здесь.
Мой application.properties выглядит следующим образом.
Вы можете следовать инструкциям по приведенной ниже ссылке.
https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/
источник
Я обнаружил, что с весенней загрузкой 2.0.2.RELEASE настройки spring-boot-starter-data-jpa и com.h2database в файле POM недостаточно для работы консоли H2. Вы должны настроить spring-boot-devtools, как показано ниже. При желании вы можете следовать инструкциям Аарона Зекоски в этом посте.
источник
Используйте jdbc: h2: mem: testdb в качестве пути при входе в консоль H2.
Очевидно, что если вы изменили свойства Spring Boot, ваш источник данных может быть другим, но похоже, что вы боретесь с тем, как найти значение по умолчанию. Вот и все! Вы увидите свою схему после входа в H2.
источник
Я совершил очень глупую ошибку, когда столкнулся с такой же проблемой. Я добавил H2 DB для запуска случаев блока тестирования и , следовательно я установить ,
scope
чтобыtest
вpom.xml
. При запуске приложения с использованиемmvn spring:run
я удалил,scope
и теперь он работает нормально.источник
Для Spring Boot 2.3.3.RELEASE прямо из Spring Initialzr:
POM: данные jpa, h2, web
свойства приложения:
spring.h2.console.enabled=true
Когда вы запустите приложение, найдите в консоли запуска строку, как показано ниже:
Теперь используйте указанный выше URL-адрес JDBC для h2-console и нажмите
Connect
.источник