L'application My Grails utilise une base de données h2 en mode dev (le comportement par défaut des applications Grails). Les paramètres de connexion à la base de données dans DataSource.groovy
sont
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"
}
J'essaie de configurer une connexion pour cette base de données à l'aide des outils client de base de données d'IntelliJ IDEA. Je commence par créer la connexion comme si
Ensuite, dans la boîte de dialogue suivante, j'entre l'URL JDBC
Et choisissez toutes les bases de données disponibles dans l'onglet "Schémas et tables".
Le bouton "Tester la connexion" indique le succès, mais comme vous pouvez le voir sur le cercle rouge, aucun tableau n'a été trouvé. Il semble que j'ai correctement configuré une connexion au serveur h2, mais pas le schéma lui-même.
BTW, j'essaie de configurer cette connexion une fois l'application en cours d'exécution, donc je suis sûr que le schéma/les tables existent réellement.
Votre configuration est pour un h2:mem
base de données. Les bases de données en mémoire n'ont aucune table lors de la connexion, et toutes les tables sont perdues lorsque toutes les connexions sont fermées. De plus, une base de données en mémoire (nommée) est unique au processus JVM qui l'ouvre. De la documentation H2 :
Parfois, plusieurs connexions à la même base de données en mémoire sont requises. Dans ce cas, l'URL de la base de données doit inclure un nom. Exemple: jdbc: h2: mem: db1. L'accès à la même base de données à l'aide de cette URL ne fonctionne que dans le même environnement de machine virtuelle et de chargeur de classes. (caractères gras ajoutés)
Cela signifie que IDEA créera un devDb
unique dans son espace JVM (et chargeur de classes) et votre application créera un devDb
unique dans sa JVM (et son chargeur de classes). Vous ne pouvez pas vous connecter à une base de données en mémoire à partir d’un processus JVM externe.
Si vous souhaitez connecter simultanément votre application et IntelliJ IDEA (ou tout autre outil de base de données)) à une base de données H2, vous devez soit:
Mixed Mode
pour autoriser IntelliJ IDEA (et/ou d’autres outils de base de données)) à s'y connecterVoir http://www.h2database.com/html/features.html#connection_modes pour plus d'informations.
Cet article explique en détail comment configurer le client de base de données IntelliJ pour se connecter à une base de données en mémoire H2 si vous utilisez Spring Boot: https://techdev.io/en/developer- blog/querying-the-embedded-h2-database-of-a-spring-boot-application
Fondamentalement, vous encapsulez la base de données en mémoire avec un serveur TCP, puis vous disposez d'un point d'accès pour vous connecter à un client SQL via un accès à distance.
Pendant le développement, vous pouvez utiliser grails h2 dbconsole
Essayez d'ouvrir http: // localhost: 8080/dbconsole et remplissez votre url jdbc