首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >没有找到数据库"C:/data/sample“和IFEXISTS=true,因此我们无法在Spring中自动创建它-错误

没有找到数据库"C:/data/sample“和IFEXISTS=true,因此我们无法在Spring中自动创建它-错误
EN

Stack Overflow用户
提问于 2019-10-09 06:39:59
回答 12查看 22.3K关注 0票数 6

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

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

下面是我的pom.xml文件和application.properties文件

pom.xml

代码语言:javascript
运行
复制
<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

代码语言:javascript
运行
复制
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

我已经附上了下面的错误图片,请参考。

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2019-10-09 07:47:17

这是一个错误的错误消息,只出现在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工具:数据库

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

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

票数 12
EN

Stack Overflow用户

发布于 2020-06-21 07:35:54

您可能错过了指定版本,请将此依赖项添加到您的pom.xml中--这将有效

代码语言:javascript
运行
复制
<dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.4.193</version>
</dependency>

如果上面的步骤不能解决这个问题,那么尝试将控制台中的JDBC更改为下面的URL

代码语言:javascript
运行
复制
jdbc:h2:mem:testdb
票数 7
EN

Stack Overflow用户

发布于 2020-07-04 15:39:03

将下面这样的db版本添加到maven依赖项,为我解决了这个问题。

代码语言:javascript
运行
复制
<version>1.4.193</version>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58298381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档