J’utilise JDBC et créé une firebase database h2 appelée usaDB à partir d’un script SQL. Ensuite, j’ai rempli toutes les tables avec jdbc.
Le problème est qu’après que je me suis connecté à usaDB à localhost: 8082, je ne peux pas voir mes tables dans l’arborescence de gauche. Il n’y a que la firebase database INFORMATION_SCHEMA et rootUser
que j’ai spécifiés en créant usaDB.
Comment afficher le contenu des tables dans ma firebase database h2?
J’ai essayé la requête SELECT * FROM INFORMATION_SCHEMA.TABLES
.
Mais il a retourné beaucoup de noms de tables, à l’exception de ceux que j’ai créés. Mon instantané:
J’ai eu le même problème et la réponse semble être vraiment stupide: lorsque vous tapez votre nom de firebase database, vous ne devez pas append le suffixe ” .h2.db “, par exemple, si vous avez le fichier db ” D: \ somebase.h2.db “votre chaîne de connexion devrait ressembler à” jdbc: h2: fichier: / D: / une base “. En d’autres termes, jdbc crée un nouveau fichier de firebase database vide nommé ” somebase.h2.db.h2.db ” et vous voyez ce que vous voyez: uniquement des tables système.
Vous pouvez utiliser la commande SHOW
:
A l’aide de cette commande, vous pouvez répertorier les schémas, les tables ou les colonnes d’une table. par exemple:
SHOW TABLES
Ce problème m’a poussé à me tourner et à part cette page, j’en ai lu beaucoup (beaucoup d’autres) jusqu’à ce que je le résolve.
Mon cas d’utilisation visait à voir comment un projet SpringBatch créé dans STS à l’aide de :: Spring Boot :: (v1.3.1.RELEASE) allait se comporter avec la firebase database H2; pour ce faire, je devais pouvoir exécuter la console H2 aussi bien pour interroger les résultats de la firebase database du traitement par lots.
C’est ce que j’ai fait et découvert:
Création d’un projet Web dans STS à l’aide de Spring Boot:
Créez maintenant un projet SpringBatch dans STS comme suit (la méthode alternative crée un modèle différent de la plupart des classes pour la persistance des données. Cette méthode crée 2 projets: un complet et l’autre initial . Utilisez la commande complète comme suit:):
J’ai rencontré exactement ce problème.
D’après ce que vous décrivez, je suppose que vous connectez votre jdbc au “vrai” serveur h2, mais que vous vous connectez sur une application Web à la firebase database par le mauvais mode (mode nested dans la mémoire, également appelé h2mem
). Cela signifie que h2 va créer une nouvelle firebase database en mémoire, au lieu d’utiliser votre véritable firebase database stockée ailleurs.
Assurez-vous que lorsque vous vous connectez à cette firebase database, vous utilisez le mode Generic H2 (Server) , NOT Generic H2 (Embedded) . Vous pouvez vous référer à l’image ci-dessous.
La version du fichier jar et de la firebase database h2 installée doit être identique.
C’est une vieille question, mais j’ai rencontré le même problème. Finalement, j’ai découvert que l’URL JDBC par défaut pointait sur un serveur de test plutôt que sur mon application. Après l’avoir corrigé, j’ai pu accéder au bon DB.
J’ai essayé avec les options Generic H2 (Embedded) et Generic H2 (Server), les deux fonctionnant tant que l’ URL JDBC : est fournie correctement.
Dans mon cas, le problème était dû au fait que je n’avais pas défini le nom d’utilisateur h2, mot de passe en java. Malheureusement, Spring ne m’a montré aucune erreur, alors ce n’était pas facile à comprendre. L’ajout de ces lignes à la méthode dataSource m’a aidé à résoudre le problème:
dataSource.setUsername("sa"); dataSource.setPassword("");
En outre, j’aurais dû spécifier le schéma lors de la création de tables dans schema.sql
La sélection de H2 générique (serveur) a été résolue pour moi. Nous avons tenté d’utiliser la valeur par défaut Generic H2 (Embedded), ce qui est faux.