Simplemente estoy tratando de ver el contenido de la base de datos H2 para una base de datos H2 incrustada que crea spring-boot cuando no especifico nada en mis application.properties y comienzo con mvn spring: run. Puedo ver cómo hibernate JPA crea las tablas, pero si intento acceder a la consola h2 en la URL debajo, la base de datos no tiene tablas.
http://localhost:8080/console/
Veo sugerencias como esta: Ver el contenido de la base de datos H2 incorporada iniciada por Spring
Pero no sé dónde poner el XML sugerido en spring-boot e incluso si lo hiciera, no quiero que h2console esté disponible más cuando se configura una base de datos externa, por lo que es más probable que necesite manejar esto con algún tipo de código condicional (o tal vez simplemente permitir que Spring lo maneje automáticamente en el caso más ideal donde solo incluyo H2 cuando se activa un perfil de maven).
¿Alguien tiene algún código de muestra que muestre cómo hacer que la consola H2 funcione en el arranque (y también la forma de averiguar cuál es la cadena de conexión jdbc que usa Spring)?
Respuestas:
Así es como conseguí que la consola H2 funcionara en spring-boot con H2. No estoy seguro de si esto es correcto, pero como nadie más ha ofrecido una solución, voy a sugerir que esta es la mejor manera de hacerlo.
En mi caso, elegí un nombre específico para la base de datos para tener algo que ingresar al iniciar la consola H2 (en este caso, "AZ"). Creo que todos estos son necesarios, aunque parece que dejar de lado la plataforma spring.jpa.database no hace daño.
En application.properties:
En Application.java (o alguna configuración):
Luego, puede acceder a la consola H2 en {server} / console /. Ingrese esto como la URL de JDBC: jdbc: h2: mem: AZ
fuente
new WebServlet()
dame problemas. ¿Qué clase te está importando? Para mí, está introduciendo javax.servlet.annotation.WebServlet como la única opción y es solo una interfaz.jdbc:h2:mem:testdb
con un nombre de usuario y una contraseña en blanco. localhost: 8082 funciona con esta configuración.A partir de Spring Boot
1.3.0.M3
, la consola H2 se puede configurar automáticamente.Los prerrequisitos son:
Incluso si no usa Spring Boot Dev Tools, aún puede configurar automáticamente la consola estableciendo
spring.h2.console.enabled
entrue
Consulte esta parte de la documentación para conocer todos los detalles.
Tenga en cuenta que al configurar de esta manera la consola es accesible en: http: // localhost: 8080 / h2-console /
fuente
spring-boot-starter-web
como dependenciajdbc:h2:mem:testdb
es para la URL de conexión, no para la URL donde se puede acceder a la consolaEncontré un buen tutorial sobre este tema:
https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/
Básicamente, la URL correcta de JDBC para mí era:
jdbc:h2:mem:testdb
fuente
De http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
Consola web H2 (H2ConsoleProperties):
Agregar las dos líneas anteriores a mi archivo application.properties fue suficiente para acceder a la consola web de la base de datos H2, usando el nombre de usuario (sa) y la contraseña predeterminados (vacío, como en no ingrese una contraseña cuando la interfaz de usuario se lo solicite).
fuente
spring.h2.console.enabled=true
? False lo desactivará. Yspring.h2.console.path=/h2-console
es redundante porque/h2-console
es la ruta predeterminada de Spring Boot. Según la documentación "De forma predeterminada, la consola estará disponible en / h2-console. Puede personalizar la ruta de la consola utilizando la propiedad spring.h2.console.path". Más detalles aquí docs.spring.io/spring-boot/docs/current/reference/html/…Una respuesta similar con la guía paso a paso.
pom.xml
obuild.gradle
Maven
Gradle
http://localhost:8080/h2-console/
jdbc:h2:mem:testdb
como URL de JDBCfuente
Solo tenía las propiedades siguientes en /resources/application.properties. Después de ejecutar el arranque de primavera, usando esta URL ( http: // localhost: 8080 / h2-console / ), la tabla en la consola H2 estaba visible y se leía para ver los datos de la tabla, también puede ejecutar comandos SQL simples. Una cosa, en su código java, mientras busca datos, los nombres de las columnas están en mayúsculas, aunque schema.sql usa nombres en minúsculas :)
fuente
Para Spring Boot 2.1.1 directamente de Spring Initialzr:
El valor predeterminado con devtools es http://127.0.0.1:8080/h2-console/
Sin devtools , debe configurarlo en propiedades:
spring.h2.console.enabled=true spring.h2.console.path=/h2-console
Una vez que llegue allí, configure la URL de JDBC: jdbc: h2: mem: testdb (la predeterminada no funcionará)
fuente
Si usa las herramientas de desarrollo de Spring Boot, viene con la Consola H2 habilitada de forma predeterminada. Se puede acceder desde
/h2-console
/. En la interfaz de inicio de sesión, paraJDBC URL
valor de uso de entradajdbc:h2:mem:testdb
. Presta atención a lamem
cuerda.Si no usa las herramientas de desarrollo de Spring Boot, puede habilitar la consola en el
application.properties
uso despring.h2.console.enabled=true
. Esto habilitará la consola debajo/h2-console
. Si desea cambiar la URL, puede agregar otra entrada conspring.h2.console.path=my_console_path
.El nombre de esquema predeterminado es
testdb
.Más detalles en la documentación de Spring Boot .
fuente
jdbc:h2:mem:testdb
establece como url jdbc predeterminada? Pasé mucho tiempo reflexionando sobre dónde fallaron mis entidadesCompruebe las propiedades de la aplicación de primavera
aquí testdb es la base de datos definida Asegúrese de que la consola h2 tenga el mismo valor mientras se conecta, de lo contrario, se conectará a la base de datos predeterminada
fuente
Para obtener las tablas, todo lo que necesita hacer es crear 2 archivos sql schema.sql (para la creación de tablas) y data.sql (datos para las tablas creadas). Estos archivos se colocarán en la carpeta src / main / resources. Spring boot auto los detecta y se encarga del resto durante el tiempo de ejecución.
Si usa más de 2 DB en su proyecto, asegúrese de usar archivos específicos como (schema-h2.sql - para h2 DB, schema-oracle.sql - para Oracle DB). Lo mismo se seguirá para data.sql también.
También asegúrese de eliminar tablas agregando la declaración de la tabla de eliminación en su schema.sql como primera declaración. Para evitar anexar registros duplicados.
El enlace para la bota de primavera está aquí.
Mi application.properties es la siguiente.
Puede seguir los pasos en el siguiente enlace.
https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/
fuente
Descubrí que con Spring Boot 2.0.2.RELEASE, configurar spring-boot-starter-data-jpa y com.h2database en el archivo POM no es suficiente para que la consola H2 funcione. Debe configurar spring-boot-devtools como se muestra a continuación. Opcionalmente, puede seguir las instrucciones de Aaron Zeckoski en esta publicación.
fuente
Utilice jdbc: h2: mem: testdb como ruta cuando inicie sesión en la consola H2.
Obviamente, si ha alterado las propiedades de Spring Boot, su fuente de datos puede ser diferente, pero parece que tiene dificultades para encontrar la predeterminada. ¡Eso es todo al respecto! Verá su esquema después de iniciar sesión en H2.
fuente
Cometí un error muy estúpido cuando tuve este mismo problema. Había añadido H2 DB para el funcionamiento de unidades de prueba y por lo tanto me había propuesto el
scope
detest
enpom.xml
. Mientras ejecutaba la aplicaciónmvn spring:run
, eliminé elscope
y ahora funciona bien.fuente