Ich versuche einfach, den Inhalt der H2-Datenbank für eine eingebettete H2-Datenbank anzuzeigen, die Spring-Boot erstellt, wenn ich in meiner application.properties nichts angebe und mit mvn spring: run beginne. Ich kann sehen, wie JPA im Ruhezustand die Tabellen erstellt, aber wenn ich versuche, auf die h2-Konsole unter der URL unter der Datenbank zuzugreifen, sind keine Tabellen vorhanden.
http://localhost:8080/console/
Ich sehe Vorschläge wie diesen: Anzeigen des Inhalts der eingebetteten H2-Datenbank, die von Spring gestartet wurde
Aber ich weiß nicht, wo ich das vorgeschlagene XML im Spring-Boot ablegen soll, und selbst wenn, möchte ich nicht, dass die h2console mehr verfügbar ist, wenn eine externe Datenbank konfiguriert ist, sodass es wahrscheinlicher ist, dass ich damit umgehen muss mit einer Art bedingtem Code (oder lassen Sie einfach zu, dass der Frühling automatisch damit umgeht, im idealsten Fall, wenn ich H2 nur einbinde, wenn ein Maven-Profil aktiviert ist).
Hat jemand einen Beispielcode, der zeigt, wie die H2-Konsole beim Booten funktioniert (und wie man herausfindet, welche JDBC-Verbindungszeichenfolge Spring verwendet)?
Antworten:
So habe ich die H2-Konsole im Spring-Boot mit H2 zum Laufen gebracht. Ich bin mir nicht sicher, ob dies richtig ist, aber da niemand eine Lösung angeboten hat, werde ich vorschlagen, dass dies der beste Weg ist, dies zu tun.
In meinem Fall habe ich einen bestimmten Namen für die Datenbank gewählt, damit ich beim Starten der H2-Konsole etwas eingeben kann (in diesem Fall "AZ"). Ich denke, all dies ist erforderlich, obwohl es so aussieht, als würde das Weglassen der spring.jpa.database-Plattform nichts schaden.
In application.properties:
In Application.java (oder einer Konfiguration):
Anschließend können Sie unter {server} / console / auf die H2-Konsole zugreifen. Geben Sie dies als JDBC-URL ein: jdbc: h2: mem: AZ
quelle
new WebServlet()
gib mir Probleme. Welche Klasse importiert das für Sie? Es zieht für mich javax.servlet.annotation.WebServlet als einzige Option ein und ist nur eine Schnittstelle.jdbc:h2:mem:testdb
mit einem leeren Benutzernamen und einem leeren Kennwort herstellen. localhost: 8082 funktioniert mit diesem Setup.Ab Spring Boot
1.3.0.M3
kann die H2-Konsole automatisch konfiguriert werden.Die Voraussetzungen sind:
Auch wenn Sie nicht Frühling Boot - Dev - Tools verwenden , können Sie immer noch automatisch konfigurieren die Konsole durch Einstellung
spring.h2.console.enabled
zutrue
In diesem Teil der Dokumentation finden Sie alle Details.
Beachten Sie, dass bei der Konfiguration auf diese Weise auf die Konsole zugegriffen werden kann unter: http: // localhost: 8080 / h2-console /
quelle
spring-boot-starter-web
als Abhängigkeit hinzugefügt habenjdbc:h2:mem:testdb
ist für die Verbindungs-URL, nicht für die URL, wo die Konsole zugänglich istIch habe ein schönes Tutorial zu diesem Thema gefunden:
https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/
Grundsätzlich war die richtige JDBC-URL für mich:
jdbc:h2:mem:testdb
quelle
Von http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
H2 Web Console (H2ConsoleProperties):
Das Hinzufügen der beiden oben genannten Zeilen zu meiner Datei application.properties reichte aus, um mit dem Standardbenutzernamen (sa) und dem Standardkennwort auf die H2-Datenbank-Webkonsole zuzugreifen (leer, da Sie kein Kennwort eingeben, wenn Sie von der Benutzeroberfläche dazu aufgefordert werden).
quelle
spring.h2.console.enabled=true
? False wird es deaktivieren. Undspring.h2.console.path=/h2-console
ist redundant, da dies/h2-console
der Standardpfad von Spring Boot ist. Gemäß Dokumentation "Standardmäßig ist die Konsole unter / h2-console verfügbar. Sie können den Pfad der Konsole mithilfe der Eigenschaft spring.h2.console.path anpassen." Weitere Details hier docs.spring.io/spring-boot/docs/current/reference/html/…Eine ähnliche Antwort mit Schritt-für-Schritt-Anleitung.
pom.xml
oderbuild.gradle
Maven
Gradle
http://localhost:8080/h2-console/
jdbc:h2:mem:testdb
als JDBC-URL anquelle
Ich hatte nur Eigenschaften unter /resources/application.properties. Nach dem Ausführen von Spring Boot unter Verwendung dieser URL ( http: // localhost: 8080 / h2-console / ) wurde die Tabelle in der H2-Konsole angezeigt und gelesen, um die Tabellendaten anzuzeigen. Sie können auch einfache SQL-Befehle ausführen. Eine Sache, in Ihrem Java-Code, während Sie Daten abrufen, sind die Spaltennamen in Großbuchstaben, obwohl schema.sql Kleinbuchstaben verwendet :)
quelle
Für Spring Boot 2.1.1 direkt von Spring Initialzr:
Die Standardeinstellung für devtools ist http://127.0.0.1:8080/h2-console/.
Ohne devtools müssen Sie es in den Eigenschaften festlegen:
spring.h2.console.enabled=true spring.h2.console.path=/h2-console
Sobald Sie dort angekommen sind, legen Sie die JDBC-URL fest: jdbc: h2: mem: testdb (Die Standard-URL funktioniert nicht)
quelle
Wenn Sie die Entwicklertools von Spring Boot verwenden, ist die H2-Konsole standardmäßig aktiviert. Es kann von
/h2-console
/ zugegriffen werden .JDBC URL
Verwenden Sie auf der Anmeldeschnittstelle den Wert für die Eingabejdbc:h2:mem:testdb
. Achten Sie auf diemem
Saite.Wenn Sie nicht Frühlings - Boot - Entwickler - Tools verwenden, können Sie die Konsole in aktivieren
application.properties
verwendenspring.h2.console.enabled=true
. Dadurch wird die Konsole unter aktiviert/h2-console
. Wenn Sie die URL ändern möchten, können Sie einen weiteren Eintrag mit hinzufügenspring.h2.console.path=my_console_path
.Der Standardschemaname lautet
testdb
.Weitere Details finden Sie in der Spring Boot-Dokumentation .
quelle
jdbc:h2:mem:testdb
als Standard-JDBC-URL festgelegt? Ich habe viel Zeit damit verbracht, darüber nachzudenken, wo meine JPA-Entitäten schief gelaufen sindÜberprüfen Sie die Eigenschaften der Federanwendung
Hier ist testdb datenbankdefiniert. Stellen Sie sicher, dass die h2-Konsole denselben Wert hat, während Sie eine Verbindung herstellen. Andernfalls wird eine Verbindung zur Standard-Datenbank hergestellt
quelle
Um die Tabellen zu erhalten, müssen Sie lediglich 2 SQL-Dateien schema.sql (für die Tabellenerstellung) und data.sql (Daten für die erstellten Tabellen) erstellen. Diese Dateien werden im Ordner src / main / resources abgelegt. Spring Boot erkennt sie automatisch und kümmert sich zur Laufzeit um den Rest.
Wenn Sie mehr als 2 DBs in Ihrem Projekt verwenden, stellen Sie sicher, dass Sie bestimmte Dateien wie (schema-h2.sql - für h2 DB, schema-oracle.sql - für oracle DB) verwenden. Das gleiche gilt auch für data.sql.
Stellen Sie außerdem sicher, dass Sie Tabellen löschen, indem Sie die Anweisung drop table in Ihrer schema.sql als erste Anweisung hinzufügen. So vermeiden Sie das Anhängen doppelter Datensätze.
Der Link zum Spring Boot ist hier.
Meine application.properties lautet wie folgt.
Sie können den Schritten unter dem folgenden Link folgen.
https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/
quelle
Ich habe festgestellt, dass mit Spring Boot 2.0.2.RELEASE die Konfiguration von Spring-Boot-Starter-Data-JPA und com.h2database in der POM-Datei nicht ausreicht, um die H2-Konsole zum Laufen zu bringen. Sie müssen spring-boot-devtools wie folgt konfigurieren. Optional können Sie den Anweisungen von Aaron Zeckoski in diesem Beitrag folgen
quelle
Verwenden Sie jdbc: h2: mem: testdb als Pfad, wenn Sie sich bei der H2-Konsole anmelden.
Wenn Sie die Spring Boot-Eigenschaften geändert haben, ist Ihre Datenquelle möglicherweise anders, aber es scheint, als hätten Sie Probleme, die Standardeinstellung zu finden. Das ist alles dazu! Sie sehen Ihr Schema, nachdem Sie sich bei H2 angemeldet haben.
quelle
Ich hatte einen sehr dummen Fehler gemacht, als ich das gleiche Problem hatte. Ich hatte H2 DB hinzugefügt, um Unit-Testfälle auszuführen, und daher hatte ich den Wert
scope
auftest
in gesetztpom.xml
. Beim Ausführen der Anwendung mit habemvn spring:run
ich das entferntscope
und es funktioniert jetzt einwandfrei.quelle