未找到数据库“C:/data/sample”,并且 IFEXISTS=true,因此我们无法自动创建它 - Spring Boot 中的错误

Atu*_*wal 3 h2 pom.xml spring-boot microservices application.properties

我创建了一个 spring boot 应用程序来连接 h2 数据库。这样做时,它会引发错误,显示未找到数据库。请帮助我解决我可以实施和解决问题的解决方案。

我在 pom.xml 文件中添加了 com.h2database 依赖项,然后它也给出了错误。

下面是我的 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>
Run Code Online (Sandbox Code Playgroud)

应用程序属性

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
Run Code Online (Sandbox Code Playgroud)

我附上了下面的错误图片,请参考。 找不到数据库错误

小智 15

根据 H2 DB 如果低于错误,那么我们有解决方案 在此输入图像描述

首先进入控制台并找到jdbc URL 在此输入图像描述

复制 URL 并放入 H2 控制台 JDBC URL 内 在此输入图像描述

然后连接

!! 快乐编码!


小智 8

您可能错过了指定版本,请在 pom.xml 中添加此依赖项,这将起作用

<dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.4.193</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

如果上述步骤不能解决问题,请尝试将控制台中的 JDBC URL 更改为以下 URL

jdbc:h2:mem:testdb
Run Code Online (Sandbox Code Playgroud)


Evg*_*nov 6

这是一条不正确的错误消息,仅出现在 1.4.198 和 1.4.199 中。H2 的下一个版本 (1.4.200) 将显示更好的消息,例如

数据库……未找到,要么预先创建,要么允许远程创建数据库(不推荐在安全环境中使用)

您看到此错误消息是因为您的数据库尚不存在。解决问题的正常方法是先使用您的应用程序创建数据库,然后再尝试使用 H2 控制台登录它。

H2 控制台可以配置为允许创建数据库,但它可能会在您的系统中创建一个安全漏洞,任何可以打开此页面的人都可以在您的系统中使用此类配置中的访问权限对您的系统进行任何操作。

请注意,H2 从系统托盘中的图标启动浏览器会话中的 H2 控制台(您可以简单地将 h2-1.4.199 jar 作为 Java 应用程序启动,或使用java -jar h2-1.4.199.jar)授予您以安全方式创建新数据库的权限。您可以将其用于该目的。如果您不打算将其用作 TCP 服务器,请在创建数据库后从系统托盘图标关闭它,以确保它不包含您的数据库。您也可以使用命令行 Shell 工具:https : //h2database.com/html/tutorial.html#creating_new_databases

Spring 的 H2 控制台没有提供这样的功能。

较旧版本的 H2(最高 1.4.197)也允许创建数据库,包括来自 Spring 的控制台,但同样,它会在您的系统中创建一个安全漏洞。