web-dev-qa-db-fra.com

connexion au démarrage par défaut H2 jdbc du ressort (et console H2)

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. Hibernate JPA crée les tables, mais si j'essaie d'accéder à la console h2 à l'URL ci-dessous, la base de données ne contient aucune table.

http://localhost:8080/console/

Je vois des suggestions comme celle-ci: Afficher le contenu de la base de données intégrée H2 lancée par Spring

Mais je ne sais pas où placer le XML suggéré dans spring-boot et même si je le faisais, 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 le gérer. avec une sorte de code conditionnel (ou peut-être simplement permettre à spring de le gérer automatiquement dans le cas le plus idéal où je n'inclue que H2 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 également le moyen de savoir quelle est la chaîne de connexion jdbc utilisée par spring)?

84
Aaron Zeckoski

C’est ainsi que j’ai fait fonctionner la console H2 dans Spring-Boot avec H2. Je ne suis pas sûr que ce soit correct, mais comme 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, même s'il semble que laisser de côté la plate-forme spring.jpa.database ne fait pas de mal. 

Dans application.properties:

spring.datasource.url=jdbc:h2:mem:AZ;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

Dans Application.Java (ou une configuration):

@Bean
public ServletRegistrationBean h2servletRegistration() {
    ServletRegistrationBean registration = new ServletRegistrationBean(new WebServlet());
    registration.addUrlMappings("/console/*");
    return registration;
}

Ensuite, vous pouvez accéder à la console H2 à partir de {serveur}/console /. Entrez ceci en tant qu'URL JDBC: jdbc: h2: mem: AZ

90
Aaron Zeckoski

À partir de Spring Boot 1.3.0.M3, la console H2 peut être configurée automatiquement. 

Les prérequis sont:

  • Vous développez une application web
  • Les outils de développement Spring Boot sont activés
  • H2 est sur le chemin de la classe

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 sur true

Consultez this une partie de la documentation pour tous les détails.

Notez que lors de cette configuration, la console est accessible à l’adresse: http: // localhost: 8080/h2-console/

44
geoand

J'ai trouvé un bon tutoriel sur ce sujet:

https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/

L'URL JDBC correcte pour moi était la suivante: jdbc:h2:mem:testdb

41
Krzysztof Kaczor

Une réponse similaire avec le guide étape par étape.

  1. Ajouter Outils de développement dependency à votre pom.xml ou build.gradle

Maven

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

Gradle

dependencies {
    compile("org.springframework.boot:spring-boot-devtools")
}
  1. Accédez à la base de données à partir de http://localhost:8080/h2-console/
  2. Spécifiez jdbc:h2:mem:testdb comme URL JDBC
  3. Vous devriez voir l'entité que vous avez spécifiée dans votre projet sous forme de tableau.
18
biniam

De http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

Console Web H2 (H2ConsoleProperties):

spring.h2.console.enabled=true //Enable the console.
spring.h2.console.path=/h2-console //Path at which the console will be available.

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, à l'aide du nom d'utilisateur par défaut (sa) et du mot de passe (vide).

16
mancini0

Je n'avais que des propriétés inférieures à /resources/application.properties. Après avoir exécuté Spring Boot, à l'aide de cette URL ( http: // localhost: 8080/h2-console/ ), la table de la console H2 était visible et lisible 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 de données, les noms de colonne sont en majuscule, même si schema.sql utilise des noms en minuscule :)

spring.datasource.initialize=true
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=- 1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.h2.console.enabled=true
14
rak22

Si vous utilisez les outils de développement de Spring Boot, H2 Console est activé par défaut. Vous pouvez y accéder à partir de /h2-console /. Sur l'interface de connexion, pour saisir JDBC URL, utilisez la valeur jdbc:h2:mem:testdb. Faites attention à la chaîne mem.

Si vous n'utilisez pas les outils de développement de Spring Boot, vous pouvez activer la console dans application.properties à l'aide de spring.h2.console.enabled=true. Cela activera la console sous /h2-console. Si vous souhaitez modifier l'URL, vous pouvez ajouter une autre entrée avec spring.h2.console.path=my_console_path.

Le nom de schéma par défaut est testdb.

Plus de détails dans Documentation Spring Boot .

8
georger

Pour Spring Boot 2.1.1 directement à partir de Spring Initialzr:

  1. La valeur par défaut avec devtools est http://127.0.0.1:8080/h2-console/

    • POM: démarreur à ressort, h2, réseau à démarreur à ressort, spring-boot-devtools
  2. Without devtools - vous devez le définir dans les propriétés: spring.h2.console.enabled=true spring.h2.console.path=/h2-console 

    • POM: démarreur à ressort, h2, ressort à démarrage à ressort

Une fois que vous y êtes arrivé - définissez l'URL JDBC: jdbc: h2: mem: testdb (celle par défaut ne fonctionnera pas)

4
Witold Kaczurba

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 Auto les détecte et s’occupe du reste pendant l’exécution.

Si vous utilisez plus de 2 bases de données dans votre projet, assurez-vous d'utiliser des fichiers spécifiques tels que (schema-h2.sql - pour base de données h2, schema-Oracle.sql - pour base de données Oracle). La même chose à suivre pour data.sql aussi.

Assurez-vous également de supprimer les tables en ajoutant la première instruction à votre table schema.sql. Pour éviter d’ajouter des enregistrements en double.

Le lien pour le démarrage du printemps est ici.

Mon application.properties est comme suit.

spring.datasource.url=jdbc:h2:~/file/Shiva;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.platform=h2
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true
spring.datasource.initialize=true 
spring.error.whitelabel.enabled=true
spring.h2.console.path=/console
spring.jpa.hibernate.ddl-auto=none
spring.datasource.continue-on-error=true
spring.jpa.hibernate.ddl-auto=create
spring.hibernate.hbm2ddl.auto=update
spring.hibernate.show_sql=true

Vous pouvez suivre les étapes dans le lien ci-dessous.

https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/

4
kemparaj565

J'ai trouvé qu'avec Spring Boot 2.0.2.RELEASE, la configuration de spring-boot-starter-data-jpa et de com.h2database dans le fichier POM ne suffisait pas pour que la console H2 fonctionne. Vous devez configurer spring-boot-devtools comme ci-dessous . Vous pouvez également suivre les instructions de Aaron Zeckoski dans ce message.

  <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
 </dependency>
2
Pragnesh Rana

Utilisez jdbc: h2: mem: testdb comme chemin d’accès pour vous connecter à 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.

2
user9023317

Vérifier le ressort application.properties

spring.datasource.url = jdbc: h2: mem: testdb; DB_CLOSE_DELAY = -1; DB_CLOSE_ON_EXIT = FALSE

ici testdb est défini par la base de données Assurez-vous que la console h2 a la même valeur lors de la connexion autrement elle se connectera à la base de données par défaut 

 enter image description here

1
vaquar khan

J'avais commis une erreur très stupide quand j'avais le même problème. J'avais ajouté H2 DB pour l'exécution de cas de tests unitaires et j'avais donc défini la variable scope à test dans pom.xml. Lors de l'exécution de l'application à l'aide de mvn spring:run, j'ai supprimé la scope et tout fonctionne correctement.

1
AbhishekB