grails - idea - intellij sql
Conéctese a la base de datos H2 utilizando el cliente de base de datos IntelliJ (4)
La aplicación My Grails usa una base de datos h2 en modo dev (el comportamiento predeterminado para las aplicaciones Grails). Las configuraciones de conexión DB en DataSource.groovy
son
dataSource {
pooled = true
jmxExport = true
driverClassName = "org.h2.Driver"
username = "sa"
password = ""
dbCreate = "create-drop" // one of ''create'', ''create-drop'', ''update'', ''validate'', ''''
url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE"
}
Estoy intentando configurar una conexión para esta base de datos utilizando las herramientas de cliente de base de datos de IntelliJ IDEA. Empiezo creando la conexión como tal.
Luego en el siguiente cuadro de diálogo, entro en la URL de JDBC
Y elija todas las bases de datos disponibles en la pestaña "Esquemas y tablas".
El botón "Conexión de prueba" indica éxito, pero como se puede ver en el círculo rojo, no se encuentran tablas. Parece que he configurado correctamente una conexión al servidor h2, pero no el esquema en sí.
Por cierto, trato de configurar esta conexión una vez que la aplicación se está ejecutando, así que estoy seguro de que el esquema / las tablas realmente existen.
Durante el desarrollo se puede utilizar grails h2 dbconsole.
Este artículo tiene una gran información sobre cómo configurar el cliente de base de datos IntelliJ para conectarse a una base de datos en memoria H2 si está utilizando Spring Boot: https://techdev.io/en/developer-blog/querying-the-embedded-h2-database-of-a-spring-boot-application
Básicamente, envuelve la base de datos en memoria con un servidor tcp, luego tiene un punto de acceso para conectarse con un cliente de SQL mediante acceso remoto.
Intente abrir http://localhost:8080/dbconsole y llene su url jdbc
Su configuración es para una base de datos h2:mem
. Las bases de datos de memoria no tienen tablas al conectarse, y todas las tablas se pierden cuando se cierran todas las conexiones. Además, un (nombrado) en la base de datos de memoria es único para el proceso JVM que lo abre. De la documentación H2 :
A veces se requieren múltiples conexiones a la misma base de datos en memoria. En este caso, la URL de la base de datos debe incluir un nombre. Ejemplo: jdbc: h2: mem: db1. El acceso a la misma base de datos utilizando esta URL solo funciona dentro de la misma máquina virtual y entorno de cargador de clases. (Énfasis añadido)
Esto significa que IDEA creará un devDb
único en su espacio JVM (y classloader) y su aplicación creará un devDb
único en su espacio JVM (y classloader). No puede conectarse a una base de datos en memoria desde un proceso JVM externo.
Si desea conectar tanto su aplicación como IntelliJ IDEA (o cualquier otra herramienta de base de datos) a una base de datos H2 al mismo tiempo, deberá:
- use una base de datos integrada (que escribe en un archivo) en su aplicación y use el
Mixed Mode
para permitir que IntelliJ IDEA (y / u otras herramientas de base de datos) se conecten a ella - usar una base de datos en modo servidor
Consulte http://www.h2database.com/html/features.html#connection_modes para obtener más información.