web-dev-qa-db-fra.com

Base de données "C: / data / sample" introuvable et IFEXISTS = true, nous ne pouvons donc pas la créer automatiquement - Erreur dans Spring Boot

J'ai créé une application Spring Boot pour y connecter la base de données H2. Ce faisant, il génère une erreur indiquant que la base de données est introuvable. Veuillez m'aider avec la solution que je peux implémenter et résoudre le problème.

J'ai ajouté la dépendance com.h2database dans le fichier pom.xml, puis cela donne également l'erreur.

Ci-dessous, mon fichier pom.xml et mon fichier application.properties

pom.xml

<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion>
    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.4.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
    <groupId>com.example</groupId>
    <artifactId>santanderdbproj</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>firstproject</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <Java.version>1.8</Java.version>
        <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
    </properties>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    <repositories>
    <repository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/milestone</url>
    </repository>


    <repository>
        <id>spring-snapshots</id>
        <name>Spring Snapshots</name>
        <url>https://repo.spring.io/snapshot</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>
<pluginRepositories>
    <pluginRepository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/milestone</url>
    </pluginRepository>

    <pluginRepository>
        <id>spring-snapshots</id>
        <name>Spring Snapshots</name>
        <url>https://repo.spring.io/snapshot</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>
</project>

application.properties

spring.datasource.url = jdbc:h2:file:C:/data/sample
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true
spring.h2.console.path=/h2

J'ai joint l'image d'erreur ci-dessous, veuillez vous y référer. Database not found error

2
Atul Agrawal

Il s'agit d'un message d'erreur incorrect qui n'apparaît que dans les versions 1.4.198 et 1.4.199. La prochaine version de H2 (1.4.200) affichera un meilleur message comme

Base de données… introuvable, soit pré-créer ou autoriser la création de base de données à distance (non recommandé dans les environnements sécurisés)

Vous voyez ce message d'erreur car votre base de données n'existe pas encore. La manière normale de résoudre votre problème est de créer la base de données d'abord avec votre application avant d'essayer de vous y connecter avec H2 Console.

La console H2 peut être configurée pour permettre la création de bases de données, mais cela peut créer une faille de sécurité dans votre système, toute personne qui peut ouvrir cette page peut faire quoi que ce soit avec votre système avec vos autorisations d'accès dans une telle configuration.

Notez que H2 Console dans la session du navigateur lancée par H2 à partir de son icône dans la barre d'état système (vous pouvez simplement lancer le pot h2-1.4.199 en tant que Java application, ou utilisez Java -jar h2-1.4.199.jar) vous donne la permission de créer une nouvelle base de données de manière sécurisée. Vous pouvez l'utiliser à cette fin. Si vous ne prévoyez pas de l'utiliser en tant que serveur TCP, fermez-le à partir de l'icône de la barre d'état système après la création de la base de données pour vous assurer qu'il ne contient pas votre base de données. Vous pouvez également utiliser le outil Shell en ligne de commande: https://h2database.com/html/tutorial.html#creating_new_databases

La console H2 du Spring n'est pas livrée avec une telle fonctionnalité.

Les versions plus anciennes de H2 (jusqu'au 1.4.197) permettent également la création de base de données, y compris la console à partir de Spring, mais, encore une fois, cela crée une faille de sécurité dans votre système.

1
Evgenij Ryazanov