web-dev-qa-db-fra.com

Comment voir toutes les tables de ma base de données h2 sur localhost: 8082?

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

 enter image description here

27

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.

39
Le_Enot

Vous pouvez utiliser la commande SHOW

grammar

À l'aide de cette commande, vous pouvez répertorier les schémas, les tables ou les colonnes d'une table. par exemple.:

SHOW TABLES
16
Paul Vargas

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.

enter image description here

4
Hoàng Long

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.

 enter image description here

2
Memin

La version du fichier jar et de la base de données h2 installée doit être identique.

1
rajeesh

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

0
Ievgen

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.

0
Well Smith