java - tutorial - ¿Cómo ver todas las tablas en mi base de datos h2 en localhost: 8082?
obtener datos de un resultset java (8)
Utilizo JDBC y creé la base de datos h2 llamada usaDB from sql script. Luego llené todas las mesas con jdbc.
El problema es que después de conectarme a usaDB en localhost: 8082 no puedo ver mis tablas en el árbol izquierdo. Solo hay una base de datos INFORMATION_SCHEMA y rootUser
que especifiqué al crear usaDB.
¿Cómo ver el contenido de las tablas en mi base de datos h2?
Intenté consultar SELECT * FROM INFORMATION_SCHEMA.TABLES
.
Pero devolvió muchos nombres de tablas excepto los que creé. Mi instantánea:
En mi caso, el problema se debió al hecho de que no configuré el nombre de usuario h2, la contraseña en java. Desafortunadamente, Spring no me mostró ningún error, por lo que no fue fácil descifrarlo. Agregar estas líneas al método dataSource me ayudó a solucionar el problema:
dataSource.setUsername("sa");
dataSource.setPassword("");
Además, debería haber especificado el esquema al crear tablas en schema.sql
Es una vieja pregunta, pero me encontré con el mismo problema. Finalmente, descubrí que la URL de JDBC predeterminada está apuntando a un servidor de prueba en lugar de a mi aplicación. Después de corregirlo, pude acceder a la base de datos correcta.
Probé con las opciones Generic H2 (Embedded) y Generic H2 (Server), ambas funcionaron siempre y cuando la URL de JDBC : se proporcione correctamente.
Este problema me dio la vuelta al giro y, además de esta página, leí muchos (¡muchos!) Otros hasta que lo resolví.
Mi caso de uso fue para ver cómo un proyecto SpringBatch creado en STS usando :: Spring Boot :: (v1.3.1.RELEASE) se iba a comportar con la base de datos H2; para hacer lo último, necesitaba poder hacer funcionar la consola H2 y consultar los resultados de la base de datos del lote.
Esto es lo que hice y descubrí:
Creé un proyecto web en STS usando Spring Boot:
- Se agregó lo siguiente al pom.xml de este último:
- Agregó un archivo de configuración de Spring como sigue al proyecto: Esto resuelve las deficiencias del proyecto web en STS. Si ejecuta el proyecto ahora, puede acceder a la consola H2 de la siguiente manera: http://localhost:8080/console
Ahora cree un proyecto SpringBatch en STS de la siguiente manera (el método alternativo crea una plantilla diferente y falta la mayoría de las clases para datos persistentes. Este método crea 2 proyectos: uno Completo y otro inicial . Use el Completo en lo siguiente):
- El proyecto SpringBatch creado con STS utiliza una base de datos H2 en memoria que CIERRA una vez que finaliza la ejecución de la aplicación; Una vez que lo ejecute, puede ver esto en la salida de registro.
- Entonces, lo que necesitamos es crear un nuevo DataSource que invalide el valor predeterminado que se incluye con el proyecto (si está interesado, simplemente eche un vistazo a los mensajes de registro y verá que utiliza un origen de datos predeterminado ... esto se crea a partir de : osjde EmbeddedDatabaseFactory con los siguientes parámetros:
Iniciando la base de datos integrada: url = ''jdbc: hsqldb: mem: testdb'', username = ''sa '') - Entonces, comienza una memoria y luego la cierra. No tiene posibilidad de ver los datos con la consola H2; ha ido y venido
- Entonces, crea una fuente de datos de la siguiente manera:
- Por supuesto, puede usar un archivo de propiedades para asignar los parámetros y perfiles para diferentes instancias de DataSource ... pero me desvío.
- Ahora, asegúrese de configurar el bit al que apunta la flecha roja en la imagen, a una ubicación en su computadora donde pueda persistir un archivo.
- Ejecutando el SpringBatch (proyecto completo ) ahora debería tener un archivo db en esa ubicación después de que se ejecute (datos de persona persistentes)
- Ejecute el proyecto web que configuró anteriormente en estos pasos, y usted: =) verá sus datos, y todos los datos del trabajo por lotes y de la ejecución por pasos (¡y listo!): Doloroso pero gratificante. Espero que te ayude a realmente BOOTSTRAP: =)
He encontrado exactamente este problema.
Por lo que describe, supongo que conecta su jdbc con el servidor h2 "real", pero se está conectando desde la aplicación web a la base de datos en el modo incorrecto (modo de memoria integrada, también h2mem
como h2mem
). Esto significa que h2 creará una nueva base de datos en memoria, en lugar de usar su verdadera base de datos almacenada en otro lugar.
Asegúrese de que cuando se conecte a esta base de datos, use el modo Generic H2 (Server) , NOT Generic H2 (Embedded) . Puede referirse a la imagen de abajo.
La versión del archivo jar y la base de datos h2 instalada deben ser iguales.
Puedes usar el comando SHOW
:
Con este comando, puede enumerar los esquemas, las tablas o las columnas de una tabla. p.ej:
SHOW TABLES
Seleccionando el H2 genérico (servidor) resuelto para mí. Tuvimos la tentación de usar el H2 genérico predeterminado (incrustado) que está mal.
Tuve el mismo problema y la respuesta parece ser realmente estúpida: cuando escribe el nombre de su base de datos, no debe agregar el sufijo " .h2.db ", por ejemplo, si tiene el archivo db " D: / somebase.h2.db "su cadena de conexión debe ser como" jdbc: h2: file: / D: / somebase ". De otra manera, jdbc crea un nuevo archivo de base de datos vacío llamado " somebase.h2.db.h2.db " y verá lo que ve: solo tablas del sistema.