Comment voir toutes les tables de ma firebase database h2 sur localhost: 8082?

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é:

entrer la description de l'image ici

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 :

grammaire

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:

  1. Création d’un projet Web dans STS à l’aide de Spring Boot: entrer la description de l'image ici

    • Ajout du suivant au pom.xml de ce dernier: entrer la description de l'image ici
    • Ajout d’un fichier de configuration Spring comme suit au projet: entrer la description de l'image ici Cela résout les lacunes du projet Web dans STS. Si vous exécutez le projet maintenant, vous pouvez accéder à la console H2 comme suit: http: // localhost: 8080 / console entrer la description de l'image ici
  2. 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:): entrer la description de l'image ici

    • Le projet SpringBatch créé avec STS utilise une firebase database H2 en mémoire qu’il ferme à la fin de l’exécution de l’application; une fois que vous l’exécutez, vous pouvez le voir dans la sortie de journalisation.
    • Nous avons donc besoin de créer une nouvelle source de données qui remplace la valeur par défaut fournie avec le projet (si cela vous intéresse, consultez simplement les messages du journal et vous verrez qu’il utilise une source de données par défaut … elle est créée à partir de : osjde EmbeddedDatabaseFactory avec les parameters suivants:
      Démarrage de la firebase database intégrée: url = ‘jdbc: hsqldb: mem: testdb’, nom d’utilisateur = ‘sa ‘)
    • Ainsi, il commence un en mémoire, puis le ferme. Vous n’avez aucune chance de voir les données avec la console H2; il est venu et reparti.
    • Donc, créez un DataSource comme suit: entrer la description de l'image ici
    • Vous pouvez bien sûr utiliser un fichier de propriétés pour mapper les parameters et les profils de différentes instances de DataSource … mais je m’éloigne du sujet.
    • Maintenant, assurez-vous de définir le bit sur lequel pointe la flèche rouge sur l’image, vers un emplacement sur votre ordinateur où un fichier peut être conservé.
    • En exécutant SpringBatch (projet complet ), vous devriez maintenant avoir un fichier de firebase database à cet emplacement après son exécution (données persistantes sur la personne).
    • Exécutez le projet Web que vous avez configuré précédemment dans ces étapes et vous: =) verrez vos données, ainsi que toutes les données du travail par lots et des étapes (et le tour est joué!): entrer la description de l'image ici Douloureux mais enrichissant. J’espère que ça vous aidera à bien BOOTSTRAP: =)

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.

entrer la description de l'image ici

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.

entrer la description de l'image ici

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.