web-dev-qa-db-fra.com

Spring-boot remplit la base de données H2 avec schema.sql et data.sql

J'ai configuré Spring-boot pour qu'il fonctionne avec la base de données H2. Le fichier application.properties se trouve dans le répertoire/config

et il ressemble, ce fichier est traité

spring.datasource.url=jdbc:h2:mem:mydb;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
spring.h2.console.path=/myconsole
spring.h2.console.enabled=true
spring.datasource.initialize=true
spring.datasource.schema=schema.sql
spring.datasource.data=data.sql

Ce fichier est traité et la console apparaît dans/myconsole. Mais schema.sql et data.sql ne sont pas traités et db est emplty. J'ai placé les fichiers schema.sql et data.sql sous/config et/src/main/resouces

Les instructions du langage SQL sont correctes et je peux remplir la table en utilisant l'entrée de la console.

Une autre chose étrange est même si je nomme db comme spring.datasource.url = jdbc: h2: mem: mydb la console spring charge une autre base de données testdb osjdeEmbeddedDatabaseFactory --- Démarrage de la base de données intégrée: url = 'jdbc: h2: mem: testdb; DB_CLOSE_DELAY = -1; DB_CLOSE_ON_EXIT = false ', username =' sa '

Comment charger correctement la base de données H2? Merci d'avance ....

10
user3687431

A résolu le problème.

L'application Spring Boot nécessite sa propre dépendance jdbc

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

La dépendance NON-boot, que j'avais, ne suffit PAS seule:

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jdbc</artifactId>
</dependency>

Sans la dépendance "spring-boot-starter-jdbc" "spring.datasource.url", les paramètres du fichier "application.properties" ne sont pas traités. Ce fichier est réellement traité, mais pas les paramètres jdbc. Spring boot créera sa propre testdb dans la mémoire, ce qui détruit les données après la fermeture de l'application.

8
user3687431