J'utilise JDBC et créé une base de données h2 appelée usaDB à partir d'un script SQL. Puis 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 l’arbre de gauchemy tables. Il n'y a que la base de données INFORMATION_SCHEMA et la variable rootUser
que j'ai spécifiées lors de la création de usaDB.
Comment afficher le contenu des tables dans ma base de données h2?
J'ai essayé la requête SELECT * FROM INFORMATION_SCHEMA.TABLES
.
Mais il a retourné beaucoup de noms de tables, sauf 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 base de données, vous ne devez pas ajouter le suffixe " .h2.db ", par exemple, si vous avez un fichier db " D:\somebase.h2.db "votre chaîne de connexion devrait ressembler à" jdbc: h2: fichier:/D:/une base ". Autrement, jdbc crée un nouveau fichier de base de données vide nommé " somebase.h2.db.h2.db " et vous voyez ce que vous voyez: uniquement les tables système.
Vous pouvez utiliser la commande SHOW
:
À l'aide de cette commande, vous pouvez répertorier les schémas, les tables ou les colonnes d'une table. par exemple.:
SHOW TABLES
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 base de données par le mauvais mode (mode imbriqué dans la mémoire, également appelé h2mem
). Cela signifie que h2 créera une nouvelle base de données en mémoire au lieu d'utiliser votre vraie base de données stockée ailleurs.
Assurez-vous que lorsque vous vous connectez à cette base de données, vous utilisez le mode Generic H2 (Serveur) , NOTGeneric H2 (Embedded). Vous pouvez vous référer à l'image ci-dessous.
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 vers un serveur de test plutôt que vers mon application. Après l'avoir corrigé, j'ai pu accéder au bon DB.
J'ai essayé avec les options génériques H2 (incorporé) et génériques H2 (serveur), les deux fonctionnant aussi longtemps que l'URL JDBC: est correctement fournie.
La version du fichier jar et de la base de données h2 installée doit être identique.
Dans mon cas, le problème était dû au fait que je n’ai pas défini le nom d’utilisateur h2, mot de passe en Java. Malheureusement, Spring ne m'a pas signalé d'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.