База данных "C: / data / sample" не найдена, и IFEXISTS = true, поэтому мы не можем автоматически создать ее - Ошибка в Spring Boot - PullRequest
0 голосов
/ 09 октября 2019

Я создал приложение весенней загрузки для подключения к нему базы данных h2. При этом выдается сообщение об ошибке «База данных не найдена». Пожалуйста, помогите мне с решением, которое я могу реализовать и решить проблему.

Я добавил зависимость com.h2database в файл pom.xml, а затем выдает ошибку.

Ниже приведеномой файл pom.xml и файл 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

Я приложил изображение ошибки ниже, пожалуйста, обратитесь к нему. База данных не найдена

1 Ответ

0 голосов
/ 09 октября 2019

Это неправильное сообщение об ошибке, которое появляется только в 1.4.198 и 1.4.199. Следующая версия H2 (1.4.200) покажет лучшее сообщение, например

База данных… не найдена, либо предварительно создайте ее, либо разрешите удаленное создание базы данных (не рекомендуется в защищенных средах)

Вы видите это сообщение об ошибке, потому что ваша база данных еще не существует. Обычный способ решить вашу проблему - сначала создать базу данных с приложением, а затем попытаться войти в нее с помощью консоли H2.

Консоль H2 можно настроить для разрешения создания базы данных, но она может создать дыру в безопасностиВ вашей системе любой, кто может открыть эту страницу, может делать с вашей системой все, что угодно, с вашими правами доступа в такой конфигурации.

Обратите внимание, что консоль H2 в сеансе браузера запускается H2 из ее значка на панели задач (вы можете простозапустите jar h2-1.4.199 как приложение Java или используйте java -jar h2-1.4.199.jar), чтобы получить разрешение на создание новой базы данных безопасным способом. Вы можете использовать его для этой цели. Если вы не планируете использовать его в качестве TCP-сервера, закройте его из значка на панели задач после создания базы данных, чтобы убедиться, что он не содержит вашу базу данных. Также можно использовать инструмент командной строки командной строки: https://h2database.com/html/tutorial.html#creating_new_databases

Консоль H2 из Spring не поставляется с такой функцией.

Более старые версии H2 (до 1.4.197)также позволяет создавать базы данных, включая консоль из Spring, но, опять же, это создает дыру в безопасности вашей системы.

...