Po prostu próbuję zobaczyć zawartość bazy danych H2 dla osadzonej bazy danych H2, którą tworzy spring-boot, gdy nie określam niczego w pliku application.properties i zaczynam od mvn spring: run. Widzę hibernację JPA tworzącą tabele, ale jeśli spróbuję uzyskać dostęp do konsoli h2 pod adresem URL poniżej, baza danych nie ma tabel.
http://localhost:8080/console/
Widzę sugestie takie jak ta: Wyświetl zawartość wbudowanej bazy danych H2 uruchomionej przez Spring
Ale nie wiem, gdzie umieścić sugerowany XML podczas rozruchu sprężynowego, a nawet gdybym to zrobił, nie chcę, aby konsola h2 była już dostępna, gdy skonfigurowana jest zewnętrzna baza danych, więc jest bardziej prawdopodobne, że będę musiał sobie z tym poradzić z jakimś rodzajem kodu warunkowego (a może po prostu pozwól sprężynie na automatyczną obsługę tego w najbardziej idealnym przypadku, w którym dołączam H2 tylko po aktywowaniu profilu maven).
Czy ktoś ma przykładowy kod pokazujący, jak uruchomić konsolę H2 podczas rozruchu (a także sposób, aby dowiedzieć się, jakie parametry połączenia jdbc używa tej sprężyny)?
Odpowiedzi:
W ten sposób uzyskałem konsolę H2 pracującą w spring-boot z H2. Nie jestem pewien, czy to prawda, ale ponieważ nikt inny nie zaproponował rozwiązania, zasugeruję, że jest to najlepszy sposób.
W moim przypadku wybrałem konkretną nazwę dla bazy danych, żeby mieć coś do wpisania podczas uruchamiania konsoli H2 (w tym przypadku „AZ”). Myślę, że wszystkie te elementy są wymagane, chociaż wydaje się, że pominięcie platformy spring.jpa.database-platform niczego nie boli.
W application.properties:
W Application.java (lub w innej konfiguracji):
Następnie możesz uzyskać dostęp do konsoli H2 pod adresem {server} / console /. Wpisz to jako adres URL JDBC: jdbc: h2: mem: AZ
źródło
new WebServlet()
daj mi problemy. Które zajęcia są dla Ciebie importowane? Pobiera javax.servlet.annotation.WebServlet jako jedyną opcję i jest to tylko interfejs.jdbc:h2:mem:testdb
z pustą nazwą użytkownika i pustym hasłem. localhost: 8082 działa z tą konfiguracją.Począwszy od Spring Boot
1.3.0.M3
, konsola H2 może być konfigurowana automatycznie.Wymagania wstępne to:
Nawet jeśli nie używasz Wiosna Boot Dev Tools, można jeszcze auto-configure konsola przez ustawienie
spring.h2.console.enabled
natrue
Sprawdź tę część dokumentacji, aby poznać wszystkie szczegóły.
Zauważ, że podczas konfigurowania w ten sposób konsola jest dostępna pod adresem: http: // localhost: 8080 / h2-console /
źródło
spring-boot-starter-web
jako zależnośćjdbc:h2:mem:testdb
dotyczy adresu URL połączenia, a nie adresu URL, w którym konsola jest dostępnaZnalazłem fajny tutorial na ten temat:
https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/
Zasadniczo prawidłowy adres URL JDBC dla mnie brzmiał:
jdbc:h2:mem:testdb
źródło
Od http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
Konsola internetowa H2 (H2ConsoleProperties):
Dodanie powyższych dwóch wierszy do mojego pliku application.properties wystarczyło, aby uzyskać dostęp do konsoli internetowej bazy danych H2, używając domyślnej nazwy użytkownika (sa) i hasła (puste, ponieważ nie wpisuj hasła, gdy interfejs użytkownika o to poprosi).
źródło
spring.h2.console.enabled=true
? Fałsz to wyłączy. Ispring.h2.console.path=/h2-console
jest nadmiarowy, ponieważ/h2-console
jest domyślną ścieżką z Spring Boot. Zgodnie z dokumentacją „Domyślnie konsola będzie dostępna pod adresem / h2-console. Możesz dostosować ścieżkę konsoli za pomocą właściwości spring.h2.console.path”. Więcej szczegółów tutaj docs.spring.io/spring-boot/docs/current/reference/html/…Podobna odpowiedź z przewodnikiem krok po kroku.
pom.xml
lubbuild.gradle
Maven
Gradle
http://localhost:8080/h2-console/
jdbc:h2:mem:testdb
jako adres URL JDBCźródło
Miałem tylko poniżej właściwości w /resources/application.properties. Po uruchomieniu spring boot, używając tego adresu URL ( http: // localhost: 8080 / h2-console / ), tabela w konsoli H2 była widoczna i odczytana, aby wyświetlić dane tabeli, można również uruchomić proste polecenia SQL. Jedna rzecz, w twoim kodzie java, podczas pobierania danych, nazwy kolumn są pisane dużymi literami, mimo że schema.sql używa małych liter :)
źródło
Dla Spring Boot 2.1.1 prosto z Spring Initialzr:
Domyślnie z devtools jest http://127.0.0.1:8080/h2-console/
Bez devtools - musisz to ustawić we właściwościach:
spring.h2.console.enabled=true spring.h2.console.path=/h2-console
Jak już tam dotrzesz - ustaw URL JDBC: jdbc: h2: mem: testdb (domyślny nie będzie działał)
źródło
Jeśli korzystasz z narzędzi deweloperskich Spring Boot, jest on dostarczany z domyślnie włączoną konsolą H2. Dostęp do niego można uzyskać pod adresem
/h2-console
/. W interfejsie logowania do wprowadzaniaJDBC URL
wartości użyciajdbc:h2:mem:testdb
. Zwróć uwagę namem
sznurek.Jeśli nie używasz narzędzi programistycznych Spring Boot, możesz włączyć konsolę w
application.properties
użyciuspring.h2.console.enabled=true
. Umożliwi to konsolę pod/h2-console
. Jeśli chcesz zmienić adres URL, możesz dodać kolejny wpis za pomocąspring.h2.console.path=my_console_path
.Domyślna nazwa schematu to
testdb
.Więcej szczegółów w dokumentacji Spring Boot .
źródło
jdbc:h2:mem:testdb
ustawiony jako domyślny adres URL jdbc? Spędziłem dużo czasu zastanawiając się, gdzie moje istoty jpa poszły źleSprawdź zastosowanie sprężyny. Właściwości
tutaj testdb jest zdefiniowany w bazie danych Upewnij się, że konsola h2 ma taką samą wartość podczas łączenia się w inny sposób, połączy się z domyślną bazą danych
źródło
Aby uzyskać tabele, wystarczy utworzyć 2 pliki sql schema.sql (do tworzenia tabel) i data.sql (dane do utworzonych tabel). Te pliki należy umieścić w folderze src / main / resources. Spring boot automatycznie je wykrywa i zajmuje się resztą podczas działania.
Jeśli używasz więcej niż 2 DB w swoim projekcie, upewnij się, że używasz określonych plików, takich jak (schema-h2.sql - dla h2 DB, schema-oracle.sql - dla oracle DB). To samo należy przestrzegać również dla data.sql.
Upewnij się również, że usuwasz tabele, dodając instrukcję drop table do pliku schema.sql jako pierwszą instrukcję. Aby uniknąć dołączania zduplikowanych rekordów.
Link do butów sprężynowych jest tutaj.
Moja application.properties jest następująca.
Możesz postępować zgodnie z instrukcjami w poniższym linku.
https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/
źródło
Zauważyłem, że w przypadku spring boot 2.0.2.RELEASE skonfigurowanie spring-boot-starter-data-jpa i com.h2database w pliku POM nie wystarczy, aby konsola H2 działała. Musisz skonfigurować spring-boot-devtools jak poniżej. Opcjonalnie możesz postępować zgodnie z instrukcjami Aarona Zeckoskiego w tym poście
źródło
Użyj jdbc: h2: mem: testdb jako ścieżki podczas logowania się do konsoli H2.
Oczywiście, jeśli zmieniłeś właściwości Spring Boot, twoje źródło danych może być inne, ale wygląda na to, że masz problem ze znalezieniem wartości domyślnej. To wszystko! Po zalogowaniu się do H2 zobaczysz swój schemat.
źródło
Popełniłem bardzo głupi błąd, gdy miałem ten sam problem. Dodałem H2 DB do uruchamiania przypadków testowych jednostek i dlatego ustawiłem
scope
opcjętest
inpom.xml
. Podczas uruchamiania aplikacji za pomocąmvn spring:run
usunąłemscope
i teraz działa dobrze.źródło
Dla Spring Boot 2.3.3. RELEASE prosto z Spring Initialzr:
POM: dane jpa, h2, web
właściwości aplikacji:
spring.h2.console.enabled=true
Po uruchomieniu aplikacji w konsoli uruchamiania szukaj linii jak poniżej:
Teraz użyj powyższego adresu URL JDBC dla konsoli h2 i kliknij
Connect
.źródło