J'essaie simplement de voir le contenu de la base de données H2 pour une base de données H2 intégrée créée par spring-boot lorsque je ne spécifie rien dans mon application.properties et que je commence par mvn spring: run. Je peux voir Hibernate JPA créer les tables, mais si j'essaye d'accéder à la console h2 à l'URL ci-dessous, la base de données n'a pas de tables.
http://localhost:8080/console/
Je vois des suggestions comme celle-ci: Afficher le contenu de la base de données H2 intégrée démarrée par Spring
Mais je ne sais pas où mettre le XML suggéré dans spring-boot et même si je l'ai fait, je ne veux plus que la h2console soit disponible lorsqu'une base de données externe est configurée, il est donc plus probable que je doive gérer cela avec une sorte de code conditionnel (ou peut-être juste permettre à spring de le gérer automatiquement dans le cas le plus idéal où je n'inclue H2 que lorsqu'un profil maven est activé).
Quelqu'un a-t-il un exemple de code montrant comment faire fonctionner la console H2 au démarrage (et aussi le moyen de savoir quelle est la chaîne de connexion jdbc utilisée par Spring)?
Réponses:
C'est ainsi que j'ai fait fonctionner la console H2 en mode spring-boot avec H2. Je ne sais pas si c'est juste, mais puisque personne d'autre n'a proposé de solution, je vais suggérer que c'est la meilleure façon de le faire.
Dans mon cas, j'ai choisi un nom spécifique pour la base de données afin d'avoir quelque chose à saisir lors du démarrage de la console H2 (dans ce cas, "AZ"). Je pense que tout cela est nécessaire bien qu'il semble que le fait d'omettre la plate-forme spring.jpa.database ne fasse aucun mal.
Dans application.properties:
Dans Application.java (ou une configuration):
Ensuite, vous pouvez accéder à la console H2 à l'adresse {server} / console /. Entrez ceci comme URL JDBC: jdbc: h2: mem: AZ
la source
new WebServlet()
me donne des problèmes. Quelle classe est-ce important pour vous? Il utilise javax.servlet.annotation.WebServlet pour moi comme la seule option et ce n'est qu'une interface.jdbc:h2:mem:testdb
avec un nom d'utilisateur et un mot de passe vides. localhost: 8082 fonctionne avec cette configuration.À partir de Spring Boot
1.3.0.M3
, la console H2 peut être configurée automatiquement.Les prérequis sont:
Même si vous n'utilisez pas Spring Boot Dev Tools, vous pouvez toujours configurer automatiquement la console en définissant
spring.h2.console.enabled
surtrue
Consultez cette partie de la documentation pour tous les détails.
Notez que lors de la configuration de cette manière, la console est accessible à l' adresse: http: // localhost: 8080 / h2-console /
la source
spring-boot-starter-web
tant que dépendancejdbc:h2:mem:testdb
c'est pour l'URL de connexion, pas pour l'URL où la console est accessibleJ'ai trouvé un joli tutoriel sur ce sujet:
https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/
En gros, l'URL JDBC correcte pour moi était:
jdbc:h2:mem:testdb
la source
Depuis http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
Console Web H2 (H2ConsoleProperties):
L'ajout des deux lignes ci-dessus à mon fichier application.properties était suffisant pour accéder à la console Web de la base de données H2, en utilisant le nom d'utilisateur (sa) et le mot de passe par défaut (vides, comme dans n'entrez pas de mot de passe lorsque l'interface utilisateur vous le demande).
la source
spring.h2.console.enabled=true
? False le désactivera. Etspring.h2.console.path=/h2-console
est redondant car/h2-console
c'est le chemin par défaut de Spring Boot. Selon la documentation "Par défaut, la console sera disponible dans / h2-console. Vous pouvez personnaliser le chemin de la console en utilisant la propriété spring.h2.console.path." Plus de détails ici docs.spring.io/spring-boot/docs/current/reference/html/…Une réponse similaire avec le guide étape par étape.
pom.xml
oubuild.gradle
Maven
Gradle
http://localhost:8080/h2-console/
jdbc:h2:mem:testdb
comme URL JDBCla source
Je n'avais que les propriétés ci-dessous dans /resources/application.properties. Après avoir exécuté Spring Boot, en utilisant cette URL ( http: // localhost: 8080 / h2-console / ), la table dans la console H2 était visible et lue pour afficher les données de la table, vous pouvez également exécuter des commandes SQL simples. Une chose, dans votre code java, lors de la récupération des données, les noms de colonnes sont en majuscules, même si schema.sql utilise des noms en minuscules :)
la source
Pour Spring Boot 2.1.1 directement à partir de Spring Initialzr:
La valeur par défaut avec devtools est http://127.0.0.1:8080/h2-console/
Sans devtools - vous devez le définir dans les propriétés:
spring.h2.console.enabled=true spring.h2.console.path=/h2-console
Une fois que vous y êtes - définissez l'URL JDBC: jdbc: h2: mem: testdb (celle par défaut ne fonctionnera pas)
la source
Si vous utilisez les outils de développement de Spring Boot, il est livré avec H2 Console activé par défaut. Il est accessible depuis
/h2-console
/. Sur l'interface de connexion, pour laJDBC URL
valeur d'utilisation d' entréejdbc:h2:mem:testdb
. Faites attention à lamem
chaîne.Si vous n'utilisez pas les outils de développement de Spring Boot, vous pouvez activer la console en
application.properties
utilisantspring.h2.console.enabled=true
. Cela activera la console sous/h2-console
. Si vous souhaitez modifier l'URL, vous pouvez ajouter une autre entrée avecspring.h2.console.path=my_console_path
.Le nom du schéma par défaut est
testdb
.Plus de détails dans la documentation de Spring Boot .
la source
jdbc:h2:mem:testdb
défini comme URL jdbc par défaut? J'ai passé beaucoup de temps à me demander où mes entités jpa ont mal tournéVérifiez l'application de ressort.properties
ici testdb est défini par la base de données Assurez-vous que la console h2 a la même valeur tout en se connectant autrement, elle se connectera à la base de données par défaut
la source
Pour obtenir les tables, il vous suffit de créer 2 fichiers sql schema.sql (pour la création de table) et data.sql (données pour les tables créées). Ces fichiers doivent être placés dans le dossier src / main / resources. Spring boot les détecte automatiquement et s'occupe du reste pendant l'exécution.
Si vous utilisez plus de 2 DB dans votre projet, assurez-vous d'utiliser des fichiers spécifiques tels que (schema-h2.sql - pour h2 DB, schema-oracle.sql - pour oracle DB). La même chose à suivre pour data.sql aussi.
Assurez-vous également de supprimer les tables en ajoutant l'instruction drop table dans votre schema.sql en tant que première instruction. Pour éviter d'ajouter des enregistrements en double.
Le lien pour la botte à ressort est ici.
Mon application.properties est la suivante.
Vous pouvez suivre les étapes dans le lien ci-dessous.
https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/
la source
J'ai trouvé qu'avec spring boot 2.0.2.RELEASE, la configuration de spring-boot-starter-data-jpa et com.h2database dans le fichier POM n'est pas seulement suffisante pour que la console H2 fonctionne. Vous devez configurer spring-boot-devtools comme ci-dessous. Vous pouvez éventuellement suivre les instructions d'Aaron Zeckoski dans cet article
la source
Utilisez jdbc: h2: mem: testdb comme chemin lors de la connexion à la console H2.
Évidemment, si vous avez modifié les propriétés de Spring Boot, votre source de données peut être différente, mais il semble que vous ayez du mal à trouver la valeur par défaut. C'est tout ce qu'on peut en dire! Vous verrez votre schéma après vous être connecté à H2.
la source
J'avais fait une erreur très stupide quand j'avais ce même problème. J'avais ajouté H2 DB pour l' exécution de cas de tests unitaires et donc j'avais mis l'
scope
àtest
enpom.xml
. Lors de l'exécution de l'application,mvn spring:run
j'ai supprimé lescope
et cela fonctionne bien maintenant.la source
Pour Spring Boot 2.3.3.RELEASE directement à partir de Spring Initialzr:
POM: données jpa, h2, web
propriétés de l'application:
spring.h2.console.enabled=true
Lorsque vous exécutez l'application, recherchez la ligne comme ci-dessous dans la console d'exécution:
Maintenant, utilisez l'URL JDBC ci-dessus pour h2-console et cliquez sur
Connect
.la source